如何检查字段是否为雄辩不为空?

我试着模型::(‘sent_at’,‘不是’,DB::生(“空”))- >…但它给出了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

当前回答

$deliveryTo = DeliveryTo::where([
            ['delete_flg', '=', 0],
            ['area_id', '=', 1],
            ['area_id', '!=', NULL],
        ])->get();

其他回答

检查“非空”

Model::whereNotNull('column1');

检查“零”

Model::whereNull('column1');

另一个解决方案是使用whereRaw()

Model::whereRaw("column1 IS NOT NULL");
Model::whereRaw("column1 IS NULL");

我知道这个问题有点老了,但我在寻找答案时偶然发现了它。虽然我在这里没有成功的答案,但我想这可能是因为我使用的是PHP 7.2和Laravel 5.7。或者可能是因为我只是在CLI上使用Laravel Tinker摆弄一些数据。

我尝试过一些对我有用的方法,也尝试过一些对我没用的方法,我希望这些方法能帮助到其他人。 我没有成功跑步:

    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(); // [ ... ]

这将像我预期的那样在数组中返回所有结果。注意:如果你愿意,你可以放弃all()并返回一个Illuminate\Database\Eloquent\Collection而不是数组。

我们可以用

Model::whereNotNull('sent_at');

Or

Model::whereRaw('sent_at is not null');

你可以简单地这样做:

Model::whereNotNull('sent_at')->get();

如果你想使用DB facade:

DB: table(“table_name”)- > whereNotNull(“sent_at”)- > get ();