所以,这是我的控制器:
$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);
以下是生成网址的代码:
@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.
但为什么呢,我必须循环,如果它只从板表获得一行?没有为每个循环运行的任何解决方案???
答案 0 :(得分:5)
由于您只想获得一个对象,因此不需要to use get()
to get a collection。使用find()
通过它的主键获取对象:
$board = Boards::find($id);
在视图中,您不需要使用@foreach
循环:
<a href="/topics/create/{{ $board->id }}">Create New Post</a>
答案 1 :(得分:2)
您可以使用Boards::find($id);
或Boards::findOrFail($id);
Boards::where('id', $id)->get();
的{{1}}来获取单行。还可以使用
return view('boards.show')->with('topics', $topics)->with('topic', $topic)->with('board', $board);
到
return view('boards.show',[
'topics'=> $topics,
'topic'=> $topic,
'board'=> $board
]);
因为通过正常值来查看使用会话不是一个好习惯