Laravel Larvel 4左连接,其中某物等于或返回零
我需要连接两个表,同时对第二个表进行求和计数。 我已经这样做了,但只有当第二个表中存在行时 如果没有任何内容,我希望联接返回零,而不是停止显示整行 我确定我需要在uid=uid和gid=gid上都使用左连接,但不确定如何使用 下面是我的工作,但过滤了太多的代码:Laravel Larvel 4左连接,其中某物等于或返回零,laravel,join,laravel-4,eloquent,left-join,Laravel,Join,Laravel 4,Eloquent,Left Join,我需要连接两个表,同时对第二个表进行求和计数。 我已经这样做了,但只有当第二个表中存在行时 如果没有任何内容,我希望联接返回零,而不是停止显示整行 我确定我需要在uid=uid和gid=gid上都使用左连接,但不确定如何使用 下面是我的工作,但过滤了太多的代码: $result = Users_team::where('users_teams.gid', '=', $gid) ->leftjoin('events_users', 'users
$result = Users_team::where('users_teams.gid', '=', $gid)
->leftjoin('events_users', 'users_teams.uid', '=', 'events_users.uid')
->where('events_users.gid', '=', $gid)
->groupBy('users_teams.uid')
->addSelect( array(
'*',
DB::raw('count(*) as apps'),
DB::raw( 'SUM(goals) AS goals' ),
DB::raw( 'SUM(assists) AS assists' ),
DB::raw( 'SUM(award) AS awards' ),
));
因此,答案是不要在左连接中单独执行“where”,这会有效地撤消它的“left”部分 相反,应该在两个条件下进行连接,如下所示
$result = Users_team::where('users_teams.gid', '=', $gid)
->leftJoin('events_users', function($join)
{
$join->on('users_teams.uid', '=', 'events_users.uid')
->on('events_users.gid', '=', 'users_teams.gid');
})
->groupBy('users_teams.uid')
->addSelect( array(
'*',
DB::raw('count(*) as apps'),
DB::raw( 'SUM(goals) AS goals' ),
DB::raw( 'SUM(assists) AS assists' ),
DB::raw( 'SUM(award) AS awards' ),
));
不只是向我们展示您的SQL,您是否可以碰巧向我们展示这两个表中的数据示例,以及您希望使用包含的两个表中的相同数据得到的结果是什么样的?很难弄清楚你到底想做什么。