1

検索クエリの場合、次のものがあります。

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;すると、正しい結果が得られます。

4

1 に答える 1