[英]Conditionally add where clause to leftJoin in Laravel
我有一些表在我的数据库中引用用户表。 所以我想在不同的表中获取指定一周内发生的活动记录。
它表明当我尝试使用where
子句时,星期是undefined
的,如下所示。
$week = 6;
$users = User::leftJoin(DB::raw('(SELECT user_id, week_number as week, SUM(amount) as performance_amount FROM performances GROUP BY week_number) AS p'), function ($join) {
$join->on('p.user_id', '=', 'users.id')->where('p.week', $week);
})
->leftJoin(DB::raw('(SELECT user_id, week_number as week, SUM(amount) as agent_amount FROM agents GROUP BY week_number) AS ag'), function ($join) {
$join->on('ag.user_id', '=', 'users.id')->where('ag.week', $week);
})
->leftJoin(DB::raw('(SELECT user_id, week_number as week, SUM(amount) as accumulative_amount FROM accumulatives GROUP BY week_number) AS ac'), function ($join) {
$join->on('ac.user_id', '=', 'users.id')->where('ac.week', $week);
})
->get();
当我硬编码周值时,它返回预期值,但记录周值的 rest 返回null
,如下所示。
对于所有地方,例如:
function ($join) {
你应该确保变量是可见的,如下所示:
function ($join) use ($week) {
您应该阅读https://www.php.net/manual/en/functions.anonymous.php了解更多详情
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.