Angenommen, ich habe ein Conversation
Modell wie folgt aus:Zählung Beziehung Beziehung in Laravel
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');
}
}
Und ein Question
Modell wie folgt aus:
class Question extends Model
{
public function conversation()
{
return $this->belongsTo('App\Conversation', 'conversation_id', 'conversation_id');
}
}
Wie man dort sehen kann, ist ein hasMany
Beziehung zwischen denen, zwei.
In der anderen Seite gibt es eine Category
wie unten, dass eine Beziehung mit Conversation
Modell hat:
class Category extends Node
{
public function conversations(){
return $this->hasMany('App\Conversation','cat','cat_id');
}
}
Jetzt möchte ich ein Attribut anhängen question_count
zu Category
benannt, die alle Fragen der Gespräche jeder Kategorie zählt. für die ich hat dieses Bild:
public function getQuestionsCountAttribute()
{
return $this->conversations->questions->count();
}
Aber wenn eine Kategorie ich diesen Fehler bekam holen:
ErrorException in Category.php line 59:
Undefined property: Illuminate\Database\Eloquent\Collection::$questions
Was habe ich getan? Wie kann ich Relationen einer Relation mit minimaler Serverüberlastung zählen?
Ich benutze Laravel 5.3.4.
das ist die richtige Antwort – vladko
Ich glaube nicht, dass es ist, er will eine Beziehung einer Beziehung zählen, nicht nur eine Beziehung – Hammerbot
Ich glaube nicht, dass es ist. Damit dies funktioniert, muss eine Beziehung zwischen Kategorie und Fragen definiert werden, und es gibt keine –