2017-12-27 15 views
5

だから、ここに私のコントローラである:LaravelでWHEREを使用した後にデータを取得するループがあるのはなぜですか?

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

しかし、私は、foreachループを削除していた場合、それはエラーを与えている:

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

$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); 

そしてここでは、URLのを生成するためのコードです

しかし、なぜボードテーブルから1行しか得られないのですか?各ループのために実行することなくそれを行う任意のソリューション???

答えて

4

オブジェクトを1つだけ取得したいので、to use get() to get a collectionは必要ありません。あなたが@foreachループを使用する必要はありませんビューで

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

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

はい、ではありません。再度、感謝します。 –

+1

代わりにfirst()またはtake(1) –

2

あなたが取得するためBoards::where('id', $id)->get();Boards::find($id);またはBoards::findOrFail($id); instedを使用することができ、それは主キーだことにより、オブジェクトを取得するにはfind()を使用して、単一row.Alsoは

0123に

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

を使用しますセッションを使用して表示するために正常値を渡すbecouse

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

が働いた良い練習

+0

を使用し、href = "{{route( 'routeName'、['id' => $ user-> id]))}}}を変更することもできますララベルでの練習 –

関連する問題