在获取常见结果时应用Left Join子句 - Laravel 5.1

时间:2016-05-03 13:05:03

标签: mysql laravel laravel-5 eloquent

我的数据库结构如下:

  

表:用户

Cache-Control
  

表:文章

id | username | email | password | status
  

表:分析

id | user_id(fk) | title | other | status

现在我想要所有文章,但我也想要 analytics 表中的数据。我想要来自Session的总和大于200的分析的所有行GROUP BY文章ID。

我的表现如下:

id | user_id | article_id(fk) | session | revenue | country_code

但是在LEFT JOIN中放入以下条件后

$articles = Article::selectRaw('articles.*, sum(analytics.revenue) as sum, IF(Sum(analytics.sessions) >= 200, Sum(analytics.sessions), 0)  AS sum_sessions
                ->join('users', 'users.id', '=', 'articles.user_id')
                ->leftJoin('analytics', function ($join) {
                    $join->on('analytics.article_id', '=', 'articles.id')
                        ->on('analytics.user_id', '=', 'users.id')
                        ->where('users.status','!=', '3')
                        ->where('analytics.country_code','=', 'US');
                })
                ->where('articles.status', 4)
                ->groupBy('articles.id')
                ->orderBy('articles.created_at', 'DESC')
                ->get();

结果没有显示应该如此。

所以我想要做的是,只有当两个表中都出现常见结果时才会将条件应用于LEFT JOIN,而不是只显示左表的结果。

0 个答案:

没有答案