在模型中使用多个关系

时间:2018-11-16 09:36:20

标签: php laravel

嗨,当我想在我的“ ForumForums”模型中使用多个关系时:

$cats = ForumCats::all();

@foreach($cat->forums as $forum)
   $forum->topics->count(); // 2

但带有:

$cats = ForumCats::all();

@foreach($cat->forums as $forum)
    $forum->topics->replies->count(); // null

我收到错误消息“此集合实例上不存在属性[回复]。”

有人可以帮助我如何解决我的问题。

我的模特是:

class ForumCats extends Model
{
    public function forums(){

        return $this->hasMany('App\Models\Forum\ForumForums', 'cat_id', 'id');
    }
}

//我需要该模型的帮助,如何导入多个关系

class ForumForums extends Model
{
    public function topics()
    {
        //with this line
        return $this->hasMany('App\Models\Forum\ForumTopics', 'forum_id', 'id')->with('replies')->with('user');
    }
}


class ForumTopics extends Model
{
    public function replies(){

        return $this->hasMany('App\Models\Forum\ForumReplies', 'topic_id', 'id')->with('user');
    }

    public function user(){

        return $this->hasOne('App\Models\User', 'id', 'topic_author');
    }
}

class ForumReplies extends Model
{
    public function user()
    {
        return $this->belongsTo('App\Models\User', 'id', 'reply_author');
    }
}

1 个答案:

答案 0 :(得分:0)

请使用$forum->topics()->replies()->count();。使用括号与不使用括号是有区别的。如果使用,将生成查询以获取值/ collection /...。如果未使用,则将获取集合。在您的情况下,topics照明集合正在使用replies函数,该函数显然在Laravel集合类中不存在。