根据查询结果显示链接

时间:2019-05-10 20:46:04

标签: php html laravel

如果有查询结果,我想显示一个链接。表为空时出现错误。预先感谢!

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) 

除非用户在表中保存一些信息,否则表开头是空的。我该怎么解决?

2 个答案:

答案 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()