>

사용자가 게시물을 그룹화하고 사용자가 작성한 총 게시물 수를 반환하는 맞춤 검색어를 작성하는 경우

SQL 쿼리

SELECT users.nameUser, COUNT(posts.namePost) AS Total, GROUP_CONCAT(posts.namePost) AS List
FROM users
JOIN posts ON users.id = posts.user_id
GROUP BY users.nameUser;
+----------+-------+-----------------------+
| nameUser | Total | List                  |
+----------+-------+-----------------------+
| alfa     |     2 | PHP 7,Aire comprimido |
| beta     |     2 | HTML 5,MySQL 8        |
+----------+-------+-----------------------+

이 질문은 어떻게 Eloquent Laravel 또는 심지어 Query Builder로이 쿼리를 빌드 할 수 있습니까?

  • 답변 # 1

    원시 쿼리 문자열을 DB 문으로 전달할 수 있습니다 :

    $data = DB::statement('
        SELECT users.nameUser, COUNT(posts.namePost) AS Total, 
        GROUP_CONCAT(posts.namePost) AS List
        FROM users
        JOIN posts ON users.id = posts.user_id
        GROUP BY users.nameUser
    ')->get();
    
    

  • 답변 # 2

    Eloquent ORM을 사용하고 Fluent를 사용하는 특정 작업에 대해서만 수행 할 수있는 방법입니다

    $data = User::select('users.nameUser')
               ->selectRaw('COUNT(posts.namePost) AS Total')
               ->selectRaw('GROUP_CONCAT(posts.namePost) AS List')
               ->join('posts', 'users.id', '=', 'posts.user_id')
               ->groupBy('users.nameUser')
               ->get();
    
    

    유용한 것들

    <올>

    selectRaw() 를 사용할 수 있습니다   DB::raw() 대신 메소드  방법

    나는 User 를 사용한다  더 많은 쿼리 작성기 코드를 포함하지 않으려면 모델

    groupBy() 를 사용합니다  방법

  • 이전 macos - Mac OSX에서 $GOPATH를 설정할 수 없습니다
  • 다음 ruby on rails - http_parserrb 설치 중 오류 - gem 기본 확장을 빌드하지 못했습니다