root09
@root09

ORM отношения в Laravel?

Есть мини форум, нужно вывести количество сообщений в разделе форума.
Вывод количества тем я сделал так:
class Forum extends Model
{
    public function topics()
    {
        return $this->hasMany('App\Topic', 'id_forum', 'id');
    }
}
....
Темы: {{$forum->topics->count()}}


А как сделать вывод количества сообщений?
Пытался сделать так, не работает:
class Topic extends Model
{
    public function messages()
    {
        return $this->hasMany('App\Message', 'id_topic', 'id');
    }
}
......
Сообщений: {{$forum->topics->messages->count()}}

Undefined property: Illuminate\Database\Eloquent\Collection::$messages (View: C:\OpenServer\domains\forum.local\resources\views\layouts\main.blade.php)
  • Вопрос задан
  • 475 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
$forum->topics - это коллекция тем. Сообщения привязаны к каждой конкретной теме, но не к их коллекции. Собственно, именно об этом в ошибке и написано.

Если вам нужно вывести количество сообщений в конкретной теме, то будет что-то вроде этого:
@foreach($forum->topics as $topic)
  {{ $topic->messages->count() }}
@endforeach

Если вам нужно подсчитать общее количество сообщений во всех темах, у коллекции есть метод sum().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы