Консультация через отношения в laravel - PullRequest
0 голосов
/ 14 февраля 2020

Я бесконечно искал вопрос, который ответил на мой вопрос здесь, и я не нашел его. Мой вопрос заключается в следующем, у меня есть 3 модели: пользователь, сообщение и комментарии. Когда пользователь имеет отношение к публикации один ко многим, а публикация также имеет отношение ко многим комментариям. Как я могу получить все комментарии пользователя на все сообщения? В настоящее время мое решение выглядит следующим образом:

Пользователи моделей:

    public function comments(){
        $comments = array();

        foreach ($this->posts()->get() as $el) {
            foreach ($el->posts()->get() as $nEl) {
                array_push($comments, $nEl);
            }
        }
        return collect($comments);
    }

Мне бы хотелось менее дорогое и нативное решение для laravel, если оно есть.

1 Ответ

0 голосов
/ 15 февраля 2020

На вашей User модели, что-то вроде:

public function getComments()
{
    return Comment::whereHas('posts', function ($query) {
        $query->where('user_id', $this->id);
    })->get();
}

См. Также: https://laravel.com/docs/6.x/eloquent-relationships#has - сквозное

...