caglaray
2 adet tablom var
1.'si languages ( id , name ) [1-Türkçe, 2-İngilizce, 3-İtalyanca , 4-Fransızca vs ]
2.'si doc_lang (id,doctorid,langid) [1-1-1 , 1-1-2 ]
Bir adet listbox'a dilleri (languages) 'i yazıdırıyorum. ve doclang'da verdiğim doctorid'nin o dili varsa işaretli yapmak istiyorum mantıken yapmak istediğim kod aşağıda
denemecontroller
$languages =DB::table('languages')->get();
$doclang =DB::table('doc_lang')
->join('languages', 'languages.id', '=', 'doc_lang.langid')
->where('doctorid',$userid)
->get();
deneme.blade.php
<select>
@foreach($languages as $lg)
@if(in_array($lg->id, $doclang->langid))
<option selected value="{{$lg->id}}"> {{$lg->name}} </option>
@else
<option value="{{$lg->id}}"> {{$lg->name}} </option>
@endif
@endforeach
</select>
Aldığım hata :
Property [langid] does not exist on this collection instance.
Yardımlarınız için şimdiden teşekkürler.
mgsmus
Önce dump($languages) ve dump($doclang) ile dönen değerleri kontrol edin.
$doclang sorgusu get ile alınıyor ama primary key yerine doctorid'ye bakıyorsunuz, yani tekil collection yerine çok elemanlı collection dönecektir. O yüzden first() ile çekmelisiniz.
@if(in_array($lg->id, $doclang->langid)) bu kısımda $doclang->langid bir array olması mümkün değil.