假設我有一個Conversation
模式是這樣的:計數關係
class Conversation extends Model
{
public function questions(){
return $this->hasMany('App\Question','conversation_id','conversation_id');
}
public function category()
{
return $this->belongsTo('App\Category', 'cat', 'cat_id');
}
}
而一個Question
模式是這樣的:
class Question extends Model
{
public function conversation()
{
return $this->belongsTo('App\Conversation', 'conversation_id', 'conversation_id');
}
}
正如你可以看到有那些之間的hasMany
關係二。
在另一方面還有一個Category
象下面這樣有Conversation
模型的關係:
class Category extends Node
{
public function conversations(){
return $this->hasMany('App\Conversation','cat','cat_id');
}
}
現在我想追加一個名爲question_count
到Category
計數每個類別的對話的所有問題的屬性。爲此,我添加了這個:
public function getQuestionsCountAttribute()
{
return $this->conversations->questions->count();
}
但是,當取一個類別,我得到這個錯誤:
ErrorException in Category.php line 59:
Undefined property: Illuminate\Database\Eloquent\Collection::$questions
我做了什麼?我如何計算一個關係與最小服務器重載的關係?
我正在使用laravel 5.3.4。
這是正確的答案 – vladko
我不認爲它是,他想要計算關係的關係,而不僅僅是關係 – Hammerbot
我不認爲它是。爲了實現這個目標,需要在類別和問題之間建立一種關係,而且沒有關係 –