在Laravel数据库查询中处理空值?

Hai*_*ood 3 php mysql null laravel laravel-4

我发现我经常需要根据id以外的条件选择一个字段.

所以,$user = User::where('last_login', $lastLogin)->where('last_warning', $lastWarning)->get();完美的工作.

直到你设置其中一个允许空值(让我们这样做last_login).

也就是说,它可以具有值或为null.

这意味着你需要使用两个函数中的一个,where()或者whereNull()要做到这一点,你需要打破链,所以它变成了

$user = User::where('last_warning', $lastWarning);

is_null($lastLogin) ? $user->whereNull('last_login') : $user->where('last_login', $lastLogin);

$user = $user->get();
Run Code Online (Sandbox Code Playgroud)

我想知道是否where有办法解决这个问题?目前如果你通过null你到达的地方where column = null不起作用!

Lau*_*nce 5

两种选择:

选项1:

if (is_null($lastLogin))
{
    $user = User::whereNull('last_login')->where('last_warning', $lastWarning)->get();
}
else
{
    $user = User::where('last_login', $lastLogin)->where('last_warning', $lastWarning)->get();
}
Run Code Online (Sandbox Code Playgroud)

选项2:

$user = User::where('last_login', (is_null($lastLogin) ? 'IS' : '=') ,$lastLogin)->where('last_warning', $lastWarning)->get();
Run Code Online (Sandbox Code Playgroud)

选项二使查询' where last_login = x'或' where last_login IS null'

  • 是否存在蚂蚁的原因,如果传递null,Where()没有任何逻辑可以自动执行此操作? (2认同)