2017-12-27 116 views
5

Yani, burada benim denetleyicisi geçerli:Neden Laravel'de WHERE kullandıktan sonra veri almak için döngü oluşturuyorsunuz?

$topics = Topic::where('board_id', $id)->with('user')->get(); 
$topic = Topic::find($id); 
$board = Boards::where('id', $id)->get(); 
return view('boards.show')->with('topics', $topics)->with('topic', $topic)->with('board', $board); 

Ve burada URL oluşturmak için kodu şöyledir:

@foreach($board as $boards) 
<a href="/topics/create/{{$boards->id}}">Create New Post</a> 
<p>No Posts Found</p> 
@endforeach 

Ama foreach döngüsü çıkarmadan ediyorsam, o hatayı veriyor:

Property [id] does not exist on this collection instance. 

Ancak neden, ben sadece bir satır tabloları tablodan almak, döngü var mı? Her döngü için çalıştırmadan herhangi bir çözüm ???

cevap

4

Sadece bir nesne almak istediğiniz için to use get() to get a collection'a ihtiyacınız yoktur.

<a href="/topics/create/{{ $board->id }}">Create New Post</a> 
+2

Evet, değil. Tekrar teşekkürler. –

+1

alternatifini ilk() kullanabilir veya (1) –

2

Sen Boards::find($id); kullanabilir veya Boards::findOrFail($id); bir almak için Boards::where('id', $id)->get(); Insted: Eğer @foreach döngü kullanmak gerekmez

$board = Boards::find($id); 

görünümünde: onun tarafından bir eşya taşımak find() kullanın birincil anahtar tek row.Also

için

return view('boards.show')->with('topics', $topics)->with('topic', $topic)->with('board', $board); 

kullanmak oturumu kullanarak görüntülemek için, normal değerlerin geçirilmesi nedeniyle bu derste

return view('boards.show',[ 
    'topics'=> $topics, 
    'topic'=> $topic, 
    'board'=> $board 
]); 

çalışmış iyi bir uygulama

+0

alabilir ve ayrıca href = "{{route ('routeName', ['id' => $ user-> id]))}}} 'i değiştirebilirsiniz. laravelde pratik yapmak –

İlgili konular