Как проверить, не является ли поле пустым в Eloquent?
Я пытался, Model::where('sent_at', 'IS NOT', DB::raw('null'))->...
но это дает IS NOT
как привязку вместо сравнения.
Вот что DB::getQueryLog()
говорит об этом:
'query' => string 'select * from my_table where sent_at = ? and profile_id in (?, ?) order by created_at desc' (length=101)
'bindings' =>
array (size=3)
0 => string 'IS NOT' (length=6)
1 => int 1
2 => int 4
!=
вместо НЕ.Ответы:
У Eloquent есть метод для этого (Laravel 4. * / 5. *);
Ларавелла 3:
источник
whereNull('deleted_at')
и получил свой запрос.whereNotNull()
метод (и некоторые другие, которые ранее не были документированы) были добавлены в документацию в версии 5.1: laravel.com/docs/5.1/queries#where-clauses .Если кто-то вроде меня захочет сделать это с помощью построителя запросов в Laravel 5.2.23, это можно сделать как ->
Или с областью в модели:
источник
'and'
означает?public function where($column, $operator = null, $value = null, $boolean = 'and');
и местоположение".....\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php"
Если вы хотите использовать фасад БД :
DB::table('table_name')->whereNotNull('sent_at')->get();
источник
Мы можем использовать
Или
источник
Я вижу, что этот вопрос немного стар, но я наткнулся на него в поисках ответа. Хотя у меня не было успеха с ответами здесь, я думаю, что это может быть, потому что я нахожусь на PHP 7.2 и Laravel 5.7. или возможно, потому что я просто играл с данными из CLI, используя Laravel Tinker.
У меня есть кое-какие вещи, которые я пробовал, которые сработали для меня, и другие, которые не помогли, надеюсь, помогут другим.
У меня не было успеха в беге:
Все вышеперечисленное вернуло мне пустой массив
Я, однако, имел успех в беге:
Это вернуло все результаты в массиве, как я ожидал. Примечание: вы можете удалить
all()
и вернуть Illuminate \ Database \ Eloquent \ Collection вместо массива, если хотите.источник
в laravel 5.4 этот код
Model::whereNotNull('column')
не работал, вам нужно добавитьget()
вотModel::whereNotNull('column')->get();
этот, он отлично работает для меня.источник
Если вы хотите найти удаленную запись (Soft Deleted Record), не используйте Eloquent Model Query. Вместо этого используйте запрос Db :: table, например, вместо использования ниже:
Использование:
источник
Db::table
для поиска удаленных записей. Вы можете отфильтровать их с помощью методаwithTrashed()
, как сказано в документации: laravel.com/docs/5.3/eloquent