Laravel Larvel 4左连接,其中某物等于或返回零

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

我需要连接两个表,同时对第二个表进行求和计数。 我已经这样做了,但只有当第二个表中存在行时

如果没有任何内容,我希望联接返回零,而不是停止显示整行

我确定我需要在uid=uid和gid=gid上都使用左连接,但不确定如何使用

下面是我的工作,但过滤了太多的代码:

$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,您是否可以碰巧向我们展示这两个表中的数据示例,以及您希望使用包含的两个表中的相同数据得到的结果是什么样的?很难弄清楚你到底想做什么。