on_click
@on_click

Как ограничить выборку whereIn по 1 записи для каждого значения из переданного массива?

Приветствую!

Допустим есть 3 основных комментария в базе, у каждого из этих комментариев есть какое-то количество ответов на них. На то что это ответ а не "родительский" комментарий, указывает поле child_id (в нем ид основного комментария).

$id_list = [1,2,3]; // id родительских комментариев
$replies = Comment::whereIn('child_id',  $id_list)->get();

Так я получаю все ответы на эти комментарий.

Подскажите пожалуйста, как можно ограничить эту выборку одним ответом на каждый из родительский комментариев (чтобы в итоге было максимум 3 записи в $replies)?
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
@jazzus
сделать hasone отношение reply в comment. затем юзать with - Comment with reply.
Только неясно почему в child id родительский комментарий. вроде называется по-другому.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@lavren
1) Отношения между родительским и дочерним hasMany (отношение модели к этой же модели только установить что через ключ child_id)

2) Получить отношения
Model::whereIn('id', [1,2,3])->with([
    'relation_name' => function($query) {
         $query->take(1);
    }
])->get()->pluck('relation_name');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы