Как получить записи, в которых столбец не пуст или не равен нулю в laravel? - PullRequest
0 голосов
/ 19 июня 2020

Это моя таблица: enter image description here

Это мой код, который я пробовал:

$socials = SocialIcon::whereNotNull('link')->get()->all();
$socials = SocialIcon::whereNotNull('link')->get();

Я хочу получить все записи, в которых ссылка на столбец не пуста.

Ответы [ 3 ]

2 голосов
/ 19 июня 2020

Сначала вы должны понять разницу между NULL и пустой строкой. NULL - это отсутствие значения, и для NULL память не выделяется. Но пустая строка - это значение, значение которого хранится в памяти как "". Из вашей базы данных я вижу, что у вас есть пустая строка в качестве значения для последней строки в столбце ссылок. Если значение равно NULL, вы обнаружите, что в поле записано NULL. Теперь, когда вы хотите проверить как NULL, так и пусто, вы должны написать это как

$socials = SocialIcon::whereNotNull('link')->orWhere('link','<>','')->get();

, этот запрос будет проверять как NULL, так и пустое значение и вернет строки с не NULL и пустым значением ссылки.

1 голос
/ 19 июня 2020

Считать значение NULL таким же, как и пустая строка, неверно. Оба они не одинаковы.

Вы можете использовать следующий код:

$socials = SocialIcon::where(function($q) { 
    $q->whereNotNull('link')->orWhere('link','<>','');
})->get();

Результат выполнения запроса в БД будет:

select * from social_icons where (link is not null or link <> "")

Если вы используете sh, чтобы узнать больше о построителе запросов Laravel, щелкните здесь

1 голос
/ 19 июня 2020

Вы можете просто сделать это

$socials = SocialIcon::where('link', '<>', '')->get();

Прочтите это: https://laravel.com/docs/7.x/queries#where -clauses

Следующее также сделает работу.

$socials = SocialIcon::all();

А затем в вашем шаблоне для второго случая:

@foreach($socials as $social)
                @if(!empty($social->link))
                your content here
                 @endif
            @endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...