2017-08-17 4 views
1

Ich habe Tag und Attendee Eloquent Modelle, sie sind in Viele-zu-viele-Beziehung. Pivot-Tabelle hat auch zwei weitere Attribute - value_int und value_string. Mein Attendee Modell sieht wie folgt aus:Laravel 5 - erhalten Sie besonders viele zu viele Beziehung basierend auf Modell und zugehörigen Modell-ID

class Attendee extends Model 
{ 
    public $timestamps = false; 

    protected $fillable = [ 
     'event_id' 
    ]; 

    public function tags() { 
     return $this->belongsToMany('App\Models\Tag', 'attendee_tag', 'attendee_id', 'tag_id') 
      ->withPivot(['value_string', 'value_int']); 
    } 

    public function scoreTagValue($tag_id) { 
     return $this->tags->where('tag_id', '=', $tag_id)->first(); 
    } 

} 

Was ich will, ist Pivot-Werte zu erhalten, basierend auf Attendee Modell und variable tag_id, also habe ich scoreTagValue Funktion geschrieben, aber es gibt immer null und ich weiß nicht, warum :(ich es so nennen. $attendee->scoreTagValue($tag_id) Vielen Dank für Ihre Hilfe :)

+0

nein, der Tag-Wert, denn ich bin auf der Suche, Score genannt wird :) – user3216673

Antwort

0

Sie benötigen die Beziehung zuzugreifen, nicht die Eigenschaft:

public function scoreTagValue($tag_id) { 
    return $this->tags()->where('tag_id', '=', $tag_id)->first(); 
} 

Auch according to the docs, withPivot() nicht ein Array nehmen, so:

->withPivot('value_string', 'value_int'); 
+0

Eigentlich glaube ich nicht, das ist richtig - tat es hilft? –

+0

Ok, jetzt bekomme ich Tags, aber ohne Pivot-Daten :) – user3216673

+0

Oh! :-) OK, habe meine Antwort aktualisiert. –