検索クエリの場合、次のものがあります。
DB::whereRaw('column = ?', 'foo')->orWhereRaw('column IS NULL')->get();
orWhereRaw
ステートメントを追加すると、 whereRaw
. どういうわけか、他のものを追加するときに最初のものを無視するようです。これは SQL ステートメントに含まれています。文字列と null 値を比較する別の方法はありますか?
以下に提案されているように、次のことも試しました。
return self::select('id')
->where('current_state', 'unavailable')
->orWhereNull('current_state')
->get();
順序を変更すると (最初に whereNull、2 番目に whereNull)、結果も異なります。where句に対応して包含クエリが正しく機能していないように見えます。通常のwhere句を使用すると、問題は発生しません。
実行SELECT * FROM events WHERE current_state='unavailable' OR current_state IS NULL;
すると、正しい結果が得られます。