Jak sprawdzić, czy pole Eloquent nie jest puste ?
Próbowałem, Model::where('sent_at', 'IS NOT', DB::raw('null'))->...
ale daje IS NOT
porównanie jako porównanie.
Oto co DB::getQueryLog()
o tym mówi:
'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
!=
zamiast NIE JEST.Odpowiedzi:
Eloquent ma na to sposób (Laravel 4. * / 5. *);
Laravel 3:
źródło
whereNull('deleted_at')
i uruchomiłem moje zapytanie.whereNotNull()
Metoda (i kilka innych, które zostały wcześniej nieudokumentowane) zostały dodane do dokumentacji w wersji 5.1: laravel.com/docs/5.1/queries#where-clauses .Jeśli ktoś taki jak ja chce to zrobić za pomocą konstruktora zapytań w Laravel 5.2.23, można to zrobić jak ->
Lub z zakresem w modelu:
źródło
'and'
oznaczapublic function where($column, $operator = null, $value = null, $boolean = 'and');
i lokalizacja -".....\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php"
Jeśli chcesz użyć fasady DB :
DB::table('table_name')->whereNotNull('sent_at')->get();
źródło
Możemy użyć
Lub
źródło
Widzę, że to pytanie jest trochę stare, ale natknąłem się na nie, szukając odpowiedzi. Mimo że nie udało mi się uzyskać odpowiedzi tutaj, myślę, że może tak być, ponieważ korzystam z PHP 7.2 i Laravel 5.7. lub możliwe, ponieważ po prostu bawiłem się niektórymi danymi na temat interfejsu CLI, używając Laravela Tinkera.
Mam kilka rzeczy, które próbowałem, które działały dla mnie, i inne, których nie mam nadziei, że pomogą innym.
Nie udało mi się uruchomić:
Wszystkie powyższe zwróciły mi pustą tablicę
Miałem jednak sukces:
To zwróciło wszystkie wyniki w tablicy, jak się spodziewałem. Uwaga: możesz upuścić
all()
i odzyskać Illuminate \ Database \ Eloquent \ Collection zamiast tablicy, jeśli wolisz.źródło
w laravel 5.4 ten kod
Model::whereNotNull('column')
nie działał, musisz dodaćget()
jak ten,Model::whereNotNull('column')->get();
ten działa dla mnie dobrze.źródło
Jeśli chcesz przeszukać usunięty rekord (miękko usunięty rekord), nie używaj Eloquent Model Query. Zamiast tego użyj zapytania Db :: table, np. Zamiast korzystania z opcji Poniżej:
Posługiwać się:
źródło
Db::table
aby znaleźć miękkie usunięte rekordy. Można je filtrować za pomocą metodywithTrashed()
, jak podano