В настоящее время я пытаюсь настроить этот параметр, чтобы получить N сообщений для каждого отношения, например, 5 комментариев для каждого сообщения вместо 5 комментариев от общего количества сообщений (проблема).
Предоставлен параметр здесь и упоминается во многих ответах на SO.
Моя модель довольно проста.Я скопировал BaseModel
и определил пространство имен для него.После этого я включил твик в отношение вот так:
public function replies()
{
return $this->hasMany(DismaUserComment::class, 'parent_comment_id', "id")}
->where("visible", 1)
->orderBy("created_at", "ASC");
}
public function repliesLimited()
{
return $this->replies()->latest()->nPerGroup('reply_comment_id', 5);
}
В контроллере я звоню with('repliesLimited')
.Исключение, которое я получаю:
Столбец не найден: 1054 Неизвестный столбец '(выберите app_users_comments
. , @rank: = IF (@group = reply_comment_id, @ rank +1, 1) 'в' списке полей '(SQL: выберите (select ``app_users_comments```.
, @rank: = IF (@group = reply_comment_id, @ rank + 1, 1) as
rank_807a5773f971e6e6a9db9e1d6ef4f63a, @group: = reply_comment_id , (select count(*) from
app_users_comments_votes * тысяча двадцать-один * app_users_comments * тысяча двадцать-дв * ID =
app_users_comments_votes .
comment_id ) as
votes_count * тысяча двадцать-шесть * app_users_comments_votes where
app_users_comments * тысяча двадцать-восемь * ID * тысяча двадцать-девять * app_users_comments_votes .
comment_id and
vote_type = 1) as
upvotes_count , (select count(*) from
app_users_comments_votes where
app_users_comments .
ID =
app_users_comments_votes .
comment_id and
vote_type = 0) as
downvotes_count from (select
app_users_comments .*, @rank := IF(@group = reply_comment_id, @rank+1, 1) as rank_807a5773f971e6e6a9db9e1d6ef4f63a, @group := reply_comment_id as group_807a5773f971e6e6a9db9e1d6ef4f63a from (SELECT @rank:=0, @group:=0) as vars, app_users_comments where
виден = 1 and
app_users_comments .
deleted_at is null order by
reply_comment_id asc,
created_at asc,
created_at desc) as app_users_comments where
rank_807a5773f971e6e6a9db9e1d6ef4f63a <= 5 and
app_users_comments * * 1 049 parent_comment_id in (1, 12, 13) and
app_users_comments .
Deleted_at` is null) "
Желаемый результат:
Получите 5 сообщений (уже сделано) для каждого сообщения, должно быть 2 комментария.
Основной способ состоит в том, чтобы ограничить отношение, но при этом будет возвращено только 2 комментария всего отношения комментариев вместо 2 комментариев на сообщение.