Giriş yapmadınız.

#1 24.02.2019 14:23:19

bhdr
Üye
Kayıtlı: 09.06.2018
Mesajlar: 89

Model mutators sorunu

Selamlar..

lexxyungcarter chatmessenger paketini kullanıyorum. Localde sorunsuz çalışıyor, sunucuya attığımda şu şekilde bir hata alıyorum;

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.name' in 'field list' (SQL: select concat(users.name) as name from `users` inner join `message_participants` on `users`.`id` = `message_participants`.`user_id` where `message_participants`.`thread_id` = 4 and `users`.`id` != 3)

Bunun sorunu user modelimde name sütununu nick olarak değiştirmekti.

User modelime şu şekilde bir ekleme yaptım;

    public function getNameAttribute()
    {
        return $this->nick;
    }

Fakat hala aynı hatayı almaya devam ediyorum.

Çevrimdışı

#2 24.02.2019 16:44:34

elementaryos
Üye
Kayıtlı: 20.04.2017
Mesajlar: 178

Yanıt: Model mutators sorunu

Sunucu da bağlı olan veritabanına bakmalısın users tablosunda bulunmayan name kolonuna erişmeye çalıştığını söylüyor. Veritabanları birbirinden farklı olabilir.
Mutation işleminde olabileceğini düşünüyorsan ilgili yeri nasıl yaptığını görmemiz gerek hata sonucunu görmek tespit etmeye yaramayacaktır.

Son düzenleyen elementaryos (24.02.2019 16:46:04)

Çevrimdışı

#3 24.02.2019 19:43:11

bhdr
Üye
Kayıtlı: 09.06.2018
Mesajlar: 89

Yanıt: Model mutators sorunu

Evet hatanın açıklamasını biliyorum. Sorun şu, messenger paketi vendors klasöründe ve thread.php dosyasının içeriğinde user modeli için name kullanılmış, ben ise nick olarak kullanıyorum. Hatayı da bu yüzden veriyor. Bu paket user modelimde name sütununu arıyor fakat ben user sütunumu nick olarak değiştirmişim. Bunu user modelde mutators ile tanımlamalıyım ki paket artık name yerine nick sütunumu bulsun.

Sorun şu, çalışmıyor. Hala user.name olarak kuruyor ilişkiyi.

Çevrimdışı

#4 24.02.2019 21:31:01

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,537
Website

Yanıt: Model mutators sorunu

Mutator/Accessor SQL sorgusundan sonra elde edilen Collection tipindeki sonuç üzerinde yapılan bir işlemdir. O yüzden bu şekilde kullanamazsınız, siz hatayı daha o aşamaya gelmeden alıyorsunuz.

Paketin kodlarına baktım, bu hatayı alabileceğiniz tek ter sanırım participantsString yöntemi ki zaten bu yöntemin ikinci parametresi bu alanı değiştirmenizi sağlıyor; participantsString(null, ['nick']); şeklinde.

Çevrimdışı

#5 25.02.2019 13:27:46

bhdr
Üye
Kayıtlı: 09.06.2018
Mesajlar: 89

Yanıt: Model mutators sorunu

mgsmus yazdı:

Mutator/Accessor SQL sorgusundan sonra elde edilen Collection tipindeki sonuç üzerinde yapılan bir işlemdir. O yüzden bu şekilde kullanamazsınız, siz hatayı daha o aşamaya gelmeden alıyorsunuz.

Paketin kodlarına baktım, bu hatayı alabileceğiniz tek ter sanırım participantsString yöntemi ki zaten bu yöntemin ikinci parametresi bu alanı değiştirmenizi sağlıyor; participantsString(null, ['nick']); şeklinde.

Bu yöntemi kullanmıyorum @mgsmus hocam. Index sayfasında veriyor bu hatayı, mesajlar urlsinde.

    public function index()
    {
        $threads = Thread::forUser(Auth::id())->latest('updated_at')->get();

        $user = User::find(Auth::id());

        return view('messenger.index', compact('threads'))->with('user', $user);
    }

Çevrimdışı

#6 26.02.2019 00:04:49

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,537
Website

Yanıt: Model mutators sorunu

messenger/index.blade.php dosyasının içeriği nedir?

Çevrimdışı

#7 26.02.2019 08:25:02

ak
Üye
Yer: İstanbul
Kayıtlı: 12.07.2014
Mesajlar: 124

Yanıt: Model mutators sorunu

Merhaba,

thread.blade index sayfasından kullanılıyor.
https://github.com/lexxyungcarter/larav … .blade.php

İlgili satır

        
<small><strong>Participants:</strong> {{ $thread->participantsString(Auth::id()) }}</small>
        
<small><strong>Participants:</strong> {{ $thread->participantsString(null, ['nick']) }}</small>
        
<small><strong>Participants:</strong> {{ $thread->participantsString(null, ['first_name', 'last_name']) }}</small>

gibi kullanılabilir.

Çevrimdışı

#8 26.02.2019 19:03:04

bhdr
Üye
Kayıtlı: 09.06.2018
Mesajlar: 89

Yanıt: Model mutators sorunu

İkinize de ayrı ayrı teşekkür ederim.

Günlerdir beni oyalayan sorunu çözdüm sayenizde.

Son düzenleyen bhdr (26.02.2019 19:03:36)

Çevrimdışı

#9 27.02.2019 13:15:05

sineld
Yönetici
Yer: Bursa
Kayıtlı: 26.12.2012
Mesajlar: 1,439
Website

Yanıt: Model mutators sorunu

Ben bu paketi bir projemde kullandım. Çok fazla SQL sorgusu yapıyor. Kullanırken dikkat etmek lazım.

Çevrimdışı

#10 04.03.2019 13:50:28

bhdr
Üye
Kayıtlı: 09.06.2018
Mesajlar: 89

Yanıt: Model mutators sorunu

sineld yazdı:

Ben bu paketi bir projemde kullandım. Çok fazla SQL sorgusu yapıyor. Kullanırken dikkat etmek lazım.

Uyarı için teşekkürler @sineld hocam..

Çevrimdışı

#11 16.03.2019 08:23:04

elementaryos
Üye
Kayıtlı: 20.04.2017
Mesajlar: 178

Yanıt: Model mutators sorunu

Demosunu inceledim ama pusher kullanmasına rağmen eşzamanlı değil ? Baktığımda ajax ile formu devralmış ama ikinci tarayıcıya düşmüyor. Yenilemek gerektikten sonra ne anlamı kalıyor ki baştan yazmak daha akıllıca.

Çevrimdışı

#12 16.03.2019 10:55:35

bhdr
Üye
Kayıtlı: 09.06.2018
Mesajlar: 89

Yanıt: Model mutators sorunu

elementaryos yazdı:

Demosunu inceledim ama pusher kullanmasına rağmen eşzamanlı değil ? Baktığımda ajax ile formu devralmış ama ikinci tarayıcıya düşmüyor. Yenilemek gerektikten sonra ne anlamı kalıyor ki baştan yazmak daha akıllıca.


Yenilemek geremiyor tüm projelerimde kullanıyorum, itici olarak pusher kullanıyorum ve whatsapp gibi eş zamanlı olarak anlık mesajlaşabiliyorsunuz.

Son düzenleyen bhdr (16.03.2019 10:56:01)

Çevrimdışı

#13 17.03.2019 21:30:35

elementaryos
Üye
Kayıtlı: 20.04.2017
Mesajlar: 178

Yanıt: Model mutators sorunu

Paketi indirdim manyaklar pusher için orayı kullanmamışlar. Git reposunda vue yazıyor  adam jquery kullanıyor düzgün bir paket yazmak gerek, veritabanı yapısı bana sağlıklı gelmedi henüz incelemedim ama benim ayrı iş parçaları için olan önemli tablolarım bile 2'nin üstüne pek çıkmaz. Bir iş için 5 tablo hiç acımıyor. Ben sıkıştırmaya çalışıyorum tiplere bölerek ama hangisi daha sağlıklı emin değilim.

Çevrimdışı

Forum alt kısmı