嗨,当我想在我的“ 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');
}
}
答案 0 :(得分:0)
请使用$forum->topics()->replies()->count();
。使用括号与不使用括号是有区别的。如果使用,将生成查询以获取值/ collection /...。如果未使用,则将获取集合。在您的情况下,topics
照明集合正在使用replies
函数,该函数显然在Laravel集合类中不存在。