запрос laravel с объединением не может группировать - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь сортировать комментарии.Каждый комментарий может иметь parent_id в случае, если он является повторением другого комментария.

Мне нужно упорядочить все комментарии по parent_date и comment_date.

Я создал этот запрос:

$union = DB::table("press_comments as c2")
        ->select("c2.body", "c2.id", 'c2.parent_id', 'c2.created_at as ac', 'p.created_at as ap')
        ->join('press_comments as p', 'c2.parent_id', '=', 'p.id');


$comments = DB::table('press_comments as c1')
        ->select("c1.body", "c1.id", 'c1.parent_id', 'c1.created_at as ac', 'c1.created_at as ap')
       // ->where("parent_id", "=", 0)
        ->union($union)
        ->orderBy("ap","asc")
        ->orderBy( "ac","asc")
        ->groupBy('id')
        ->paginate();

Но я получил слишком много строк: кажется, что groupBy не работает.

В обычном mysql это работает:

SELECT *
   FROM (   SELECT c1.id,
              c1.parent_id,
              c1.created_at ac,
              c1.created_at ap
       FROM press_comments c1
       UNION
       SELECT c2.id,
              c2.parent_id,
              c2.created_at ac,
              p.created_at ap
       FROM press_comments c2
       JOIN press_comments p
       ON c2.parent_id = p.id) c
GROUP BY id
ORDER BY c.ap, c.ac;

Чего мне не хватает в моем запросе Laravel?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...