Показать ссылку на основе результата запроса - PullRequest
0 голосов
/ 10 мая 2019

Я хочу показать ссылку, если есть результаты из запроса.Я получаю сообщение об ошибке, когда таблица пуста.Заранее спасибо!

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 ]

1 голос
/ 10 мая 2019

С запросом все в порядке, кроме предложения where, вы не должны передавать туда такой массив, поэтому попробуйте заменить условие следующим образом:

@if(Auth::user()->friends()->where('status', 'received')->first())

first возвращает ноль , если не найден, то есть false, и все будет хорошо.

И в качестве предложения я бы не ставил запрос в поле зрения, я бы лучше передавал его из контроллера. Таким образом, вы можете сохранить в переменной, например:

$newFriends = Auth::user()->friends()->where('status', 'received')->first();

return view('your_view_name', compact('newFriends'));

Тогда в поле зрения

@if($newFriends)
...
@endif
0 голосов
/ 11 мая 2019

Проблема связана с предложением where в запросе: вы передаете массив, но не используете оператор array => между индексом и значением, поэтому php будет считать, что и status, и received являются значениями массиваи не будет использовать status в качестве индекса, для более подробной информации php-массивы .

, поэтому для решения этой проблемы вы можете использовать предложение where без массива, поскольку вы проверяете только один индекс

Auth::user()->friends()->where('status', 'received')->first()

или вы можете использовать массив, но обязательно используйте => operator

Auth::user()->friends()->where(['status' => 'received'])->first()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...