我在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
,即使我没有写?
答案 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