为什么在Laravel中使用WHERE后循环获取数据?

问题描述 投票:6回答:2

所以,这是我的控制器:

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

但是为什么呢,我必须循环,如果它只从板表中获得一行?没有为每个循环运行的任何解决方案???

php laravel laravel-5
2个回答
5
投票

由于您只想获得一个对象,因此您不需要to use get() to get a collection。使用find()通过它的主键获取对象:

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

在视图中,您不需要使用@foreach循环:

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

2
投票

您可以使用qazxsw poi或qazxsw poi而不是qazxsw poi获得单行。也可以使用

Boards::find($id);

Boards::findOrFail($id);

因为将正常值传递给使用会话查看不是一个好习惯

© www.soinside.com 2019 - 2024. All rights reserved.