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

我试着模型::(‘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

当前回答

我们可以用

Model::whereNotNull('sent_at');

Or

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

其他回答

Eloquent对此有一个方法(Laravel 4.*/5.*);

Model::whereNotNull('sent_at')

Laravel 3:

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

在laravel 5.4中,这段代码Model::whereNotNull('column')不起作用,你需要像这样添加get() Model::whereNotNull('column')->get();这个很适合我。

您也可以使用原始查询。

记住:报告是我的模型,我使用原始,原始查询的最好的事情是,你可以使用多种类型的操作符,如and,或等,只是作为一个字符串传递。

例如:WHERE condition1 AND condition2 AND condition3…;


Reports::whereRaw("column1 IS NOT NULL AND column2 IS NOT NULL");

上面的查询将以如下方式执行:

从列不为空和列2不为空的报告中选择*。

为了更多地理解IS Null和IS not Null操作符:

https://www.w3schools.com/sql/sql_and_or.asp

如果你想使用DB facade:

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