Laravel 5.5中的LeftJoin包括另一张桌子

时间:2017-11-22 12:56:32

标签: php mysql laravel select laravel-5

所以我正在使用LeftJoin,但我不能这样做我想要它。

我有什么:

Table 1: Blog_Category
Contains: `category_id`, `name`
Table 2: Blog
Contains: `blog_id`, `category_id`, `title` .... etc.

我的构建,但不起作用:

public static function ShowAll() {
     return self::leftJoin('Blog', 'Blog_Category.category_id', '=', 'Blog.title')
        ->selectRaw('Blog_Category.*, count(Blog.blog_id) as Counts')
        ->groupBy('Blog_Category.category_id')
        ->get();
}

我想得的是category_idname,COUNT(计算包含当前category_id的blog_id)

总之,我希望在名称旁边显示类别计数。 谢谢!

编辑:其实我刚刚意识到,我根本不需要加入。我需要将这个SQL变为函数:

SELECT blog_category.category_id AS id,
    blog_category.name AS name,
    (SELECT COUNT(*) FROM blog WHERE blog.category_id = blog_category.category_id) AS count
    FROM blog_category;

2 个答案:

答案 0 :(得分:0)

使用https://laravel.com/docs/5.5/eloquent并为博客和博客类别制作模型,然后您可以执行$ category = $ blog-> category

答案 1 :(得分:0)

嗯,我用最简单的方法,用原始选择。

我在这里发布代码,对于那些遇到同样问题的人:

public static function ShowAll() {
    return self::selectRaw('blog_category.category_id AS id, blog_category.name AS name, (SELECT COUNT(*) FROM blog WHERE blog.category_id = blog_category.category_id) AS count')->get();
}