Eloquent로 "null이 아닌 경우"를 어떻게 확인합니까?
Eloquent 에서 필드 가 null이 아닌지 어떻게 확인 합니까?
나는 시도 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. *).
Model::whereNotNull('sent_at')
라 라벨 3 :
Model::where_not_null('sent_at')
나와 같은 사람이 Laravel 5.2.23의 쿼리 작성기를 사용하여 수행하려는 경우 다음과 같이 수행 할 수 있습니다.
$searchResultQuery = Users::query();
$searchResultQuery->where('status_message', '<>', '', 'and'); // is not null
$searchResultQuery->where('is_deleted', 'IS NULL', null, 'and'); // is null
또는 모델 범위가있는 경우 :
public function scopeNotNullOnly($query){
return $query->where('status_message', '<>', '');
}
DB 파사드 를 사용하려는 경우 :
DB::table('table_name')->whereNotNull('sent_at')->get();
사용할 수있다
Model::whereNotNull('sent_at');
또는
Model::whereRaw('sent_at is not null');
나는이 질문이 약간 오래되었지만 답을 찾기 위해 그것을 뛰어 넘었다. 여기서 답변 을 얻지 못했지만 PHP 7.2 및 Laravel 5.7을 사용 하고 있기 때문일 수 있습니다 . Laravel Tinker를 사용하여 CLI의 일부 데이터를 가지고 놀았 기 때문에 가능합니다.
나는 내가 시도한 것들과 다른 사람들을 도울 희망이없는 다른 것들을 가지고있다.
나는 성공을 거두지 못했습니다.
MyModel::whereNotNull('deleted_by')->get()->all(); // []
MyModel::where('deleted_by', '<>', null)->get()->all(); // []
MyModel::where('deleted_by', '!=', null)->get()->all(); // []
MyModel::where('deleted_by', '<>', '', 'and')->get()->all(); // []
MyModel::where('deleted_by', '<>', null, 'and')->get()->all(); // []
MyModel::where('deleted_by', 'IS NOT', null)->get()->all(); // []
위의 모든 것이 빈 배열을 반환했습니다.
그러나 나는 성공을 거두었 다.
DB::table('my_models')->whereNotNull('deleted_by')->get()->all(); // [ ... ]
이것은 예상대로 배열의 모든 결과를 반환했습니다. 참고 : 원하는 경우 배열을 삭제하고 배열 대신 Illuminate \ Database \ Eloquent \ Collection을all()
다시 가져올 수 있습니다 .
$searchResultQuery = Users::query();
$searchResultQuery->where('status_message', '<>', '', 'and'); // is not null
$searchResultQuery->where('is_deleted', 'IS NULL', null, 'and'); // is null
에 laravel 5.4 이 코드를 Model::whereNotNull('column')
추가 할 필요가 작동하지 않는 get()
이와 같은 Model::whereNotNull('column')->get();
이 사람이 나를 위해 잘 작동합니다.
삭제 된 레코드 (소프트 삭제 된 레코드)를 검색하려면 Eloquent Model Query를 사용하지 마십시오. 대신 Db :: table 쿼리를 사용하십시오. 예 : 아래를 사용하는 대신 :
$stu = Student::where('rollNum', '=', $rollNum . '-' . $nursery)->first();
사용하다:
$stu = DB::table('students')->where('rollNum', '=', $newRollNo)->first();
참고 URL : https://stackoverflow.com/questions/21281504/how-do-you-check-if-not-null-with-eloquent
'development' 카테고리의 다른 글
MySQL로 중앙값을 계산하는 간단한 방법 (0) | 2020.05.13 |
---|---|
C ++ 11에서 어떤 C ++ 숙어가 더 이상 사용되지 않습니까? (0) | 2020.05.13 |
팬더에서 복잡한 기준으로 선택 (0) | 2020.05.13 |
자바“가상 머신”과 파이썬“인터프리터”의 용어? (0) | 2020.05.13 |
빌드 오류 : System.Runtime에 대한 참조를 추가해야합니다 (0) | 2020.05.13 |