is null 在 laravel 查询的末尾连接
is null is concatenated at end in laravel query
我正在 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查询最后还有is null
?
where
函数需要第二个参数,而你没有提供,第二个参数的默认值是 null
,这就是 is null
附加的原因您的查询。您可以使用 whereRaw
函数来解决您的问题。
Laravel 其中 需要三个参数。第一个参数是列的名称。第二个参数是一个运算符,它可以是数据库支持的任何运算符。最后,第三个参数是根据列检查 here
评估的值
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();
在您上面的代码中,您没有传递 2 或第二个和第三个参数,这就是它显示为空的原因。相反,您可以尝试 whereRaw
此处 whereRaw 将接受查询。
Projects::select(DB::Raw('count(projects.id) as projects'))
->leftJoin('project_team as pt', 'projects.id', '=', 'pt.project_id')
->whereRaw('projects.id = ' .$projectId. ' AND ( project_manager_id = ' .$LoggedInUserId. ' OR pt.employee_id = ' . $LoggedInUserId)->toSql();
我正在 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查询最后还有is null
?
where
函数需要第二个参数,而你没有提供,第二个参数的默认值是 null
,这就是 is null
附加的原因您的查询。您可以使用 whereRaw
函数来解决您的问题。
Laravel 其中 需要三个参数。第一个参数是列的名称。第二个参数是一个运算符,它可以是数据库支持的任何运算符。最后,第三个参数是根据列检查 here
评估的值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();
在您上面的代码中,您没有传递 2 或第二个和第三个参数,这就是它显示为空的原因。相反,您可以尝试 whereRaw
此处 whereRaw 将接受查询。
Projects::select(DB::Raw('count(projects.id) as projects'))
->leftJoin('project_team as pt', 'projects.id', '=', 'pt.project_id')
->whereRaw('projects.id = ' .$projectId. ' AND ( project_manager_id = ' .$LoggedInUserId. ' OR pt.employee_id = ' . $LoggedInUserId)->toSql();