在laravel查询结尾处连接为null

时间:2016-12-14 07:15:36

标签: mysql laravel laravel-5 laravel-5.3

我在Laravel

下面打印Sql查询
$CheckIfAssigned = Projects::select(DB::Raw('count(projects.id) as projects'))
                ->leftJoin('project_team as pt', 'projects.id', '=', 'pt.project_id')
                ->where(DB::Raw('(projects.id = '.$projectId.') AND ( project_manager_id = '.$LoggedInUserId.' OR pt.employee_id = '.$LoggedInUserId.')'))->toSql();

我得到的结果是:

select count(projects.id) as projects from `projects` left join
 `project_team` as `pt` on `projects`.`id` = `pt`.`project_id` 
where (projects.id = 13) AND ( project_manager_id = 9 OR pt.employee_id = 9) is null

为什么在最后的Sql Query中有is null,即使我没有写?

2 个答案:

答案 0 :(得分:3)

where函数需要第二个参数,而您没有提供,第二个参数的默认值为null,这就是{{1}的原因正在附加到您的查询。您可以使用is null功能来解决您的问题。

答案 1 :(得分:2)

Laravel 其中需要三个参数。第一个参数是列的名称。第二个参数是运算符,它可以是任何数据库支持的运算符。最后,第三个参数是要根据列检查here

进行评估的值
"submit #myform": function(event){
  event.preventDefault();
}

在上面的代码中,你没有传递2 OR 2和3参数这就是为什么它显示为null。相反,您可以尝试Projects::select(DB::Raw('count(projects.id) as projects')) ->leftJoin('project_team as pt', 'projects.id', '=', 'pt.project_id') ->where(DB::Raw('(projects.id = '.$projectId.') AND ( project_manager_id = '.$LoggedInUserId.' OR pt.employee_id = '.$LoggedInUserId.')'))->toSql(); 这里whereRaw将接受查询。

whereRaw