2017-11-22 2 views
0

그래서 LeftJoin으로 작업하고 있었지만 원하는 방식으로 처리 할 수 ​​없었습니다.Laravel 5.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_id, name, COUNT합니다 (를 포함 blog_id을 계산이다 현재 category_id)

한 마디로, 이름 옆에 카테고리 수를 넣고 싶습니다. 감사합니다.

편집 : 실제로 나는 단지 Join이 전혀 필요 없다는 것을 깨달았습니다. 나는 함수로이 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; 
+0

것은 당신이 설득력 또는 쿼리 빌더를 사용하고 있습니까 :

나는 같은 문제를 가지고 사람들을 위해, 여기에 코드를 게시하도록하겠습니다? –

+0

정말 잘 모르겠습니다. 이 함수는 다음과 같이 Model 클래스에 있습니다 : protected $ table = 'blog_category'; – Nicox

+0

사실 내가 가입 할 필요는 없습니다. 게시물을 읽습니다. 편집 – Nicox

답변

0

그럼 내가 그것을했다 가장 쉬운 방법은 Raw Select입니다.

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(); 
} 
관련 문제