首页 > 解决方案 > 你如何在 laravel 5.4 中编写这个 sql 查询?

问题描述

        $user= Select from user where 'email' = $email AND 'specialty' =null OR 'address' = null OR 'country' =null OR 'state' = null;

这是我拥有的代码,但它无法正常工作。如果任何所述列的值为空,我想要的是返回该行。

    $doctor= Doctor::where('email',$email)->where(function ($query) {
            $query->orWhere('state','=','')
                  ->orWhere('country','=','')
                  ->orWhere('address','=','')
                  ->orWhere('specialty','=','');
        })->get();

标签: phpmysqllaravel-5

解决方案


首先NULL应该使用在 SQL 中进行过滤的第一件事where x IS NOT NULL

对于 laravel 部分,Eloquent 有一个whereNull方法,查看更多:https ://laravel.com/docs/5.6/queries

所以你雄辩的代码应该看起来像:

$doctor= Doctor::where('email',$email)->where(function ($query) {
        $query->orWhereNull('state')
              ->orWhereNull('country')
              ->orWhereNull('address')
              ->orWhereNull('specialty');
    })->get();

推荐阅读