2017-12-27 491 views
5

所以,這裏是我的控制器:爲什麼在Laravel中使用WHERE循環獲取數據?

$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代碼:

@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. 

但是,爲什麼我必須循環,如果它只從電路板表中獲得一行?任何解決方案,不爲每個循環運行?

回答

4

既然你只想得到一個物體,你不需要to use get() to get a collection。使用find()通過它來得到一個對象的主鍵:

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

在視圖中,您不需要使用@foreach循環:

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

是的,這工作。再次感謝。 –

+1

另外你可以先使用()或採取(1) –

2

您可以使用Boards::find($id);Boards::findOrFail($id); insted的的Boards::where('id', $id)->get();爲得到一個單row.Also使用

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

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

becouse傳遞正常值使用會話,查看是不是一個好的做法

+0

並且改變路由在laravel練習 –