如果有查询结果,我想显示一个链接。表为空时出现错误。预先感谢!
html:
...
<div class="notification">
<header><h3>Notification</h3></header>
@if(Auth::user()->friends()->where(['status', 'received'])->first())
<a href="" class="">You have a new request!</a>
@endif
</div>
...
错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'where clause'
(SQL: select * from `friends` where `friends`.`user_id` = 2 and `friends`.`user_id` is not null and (`0` = status and `1` = received) limit 1)
除非用户在表中保存一些信息,否则表开头是空的。我该怎么解决?
答案 0 :(得分:1)
查询还可以,除了where
子句,您不应在该处传递数组,因此请尝试使用以下条件替换条件:
@if(Auth::user()->friends()->where('status', 'received')->first())
first
如果找不到false
,则会返回 null ,并且可以正常工作。
作为一个建议,我不会将查询放在视图中,我会更好地从控制器传递它。因此,您可以将其存储到变量中,例如:
$newFriends = Auth::user()->friends()->where('status', 'received')->first();
return view('your_view_name', compact('newFriends'));
然后在视图中
@if($newFriends)
...
@endif
答案 1 :(得分:0)
问题出在查询中的where子句中,您在索引和值之间传递了一个数组,但没有使用array =>运算符,因此php会认为status
和{{1} }是数组值,不会将received
用作索引,以获取更多详细信息php arrays。
要解决此问题,您可以使用不带数组的where子句,因为您只检查一个索引
status
或者您可以使用数组,但请确保使用=>运算符
Auth::user()->friends()->where('status', 'received')->first()