2017-10-12 3 views
0
Edit: 
I dont think its the same issue as: 
https://stackoverflow.com/questions/40022929/laravel-relationship-error-undefined-property-illuminate-database-eloquent-col 
because in that issue hasMany relationship is used which returns an array but i used belongsTo which should return a certain object. 

Ich habe eine Datenbank-Struktur, wo ich eine viele zu viele Beziehung zwischen Benutzern und Unternehmen Tabelle haben. Dafür habe ich eine Kreuzreferenztabelle company_user. Außerdem hat jeder Benutzer eine bestimmte Rolle in einer Firma, so dass die Crossreference-Tabelle auch eine role_id hat. Das Problem ist, dass ich aus irgendeinem Grund eine Ausnahme erhalte, wenn ich versuche, die Rolle aus der Kreuzreferenztabelle abzurufen.Laravel - Angehörige zu Beziehung in benutzerdefinierten Pivot-Modell funktioniert nicht

Hier ist, wie ich die Beziehung definiert in Gesellschaft Modell:

public function users() { 
    return $this->belongsToMany('App\User')->withPivot('role_id')->using('App\CompanyUser'); 
} 

Wenn ich nun funktioniert nur versuchen, zu role_id von Pivot alles zu bekommen:

@foreach($company->users as $user) 
    {{$user->pivot->role_id}} // this displays correct role_id 
@endforeach 

Aber ich brauche auch die Daten von Die Rolle, also habe ich eine Beziehung in meinem benutzerdefinierten Pivot definiert. Hier ist das ganze Modell:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Relations\Pivot; 

class CompanyUser extends Pivot 
{ 
    public function role() 
    { 
     return $this->belongsTo('App\Role'); 
    } 
} 

und ich versuchte, es wie folgt zugreifen:

@foreach($company->users as $user) 
    {{$user->pivot->role()->id}} 
@endforeach 

Aber das gibt mir eine Ausnahme:

Undefined property: Illuminate\Database\Eloquent\Relations\BelongsTo::$id 

Was bin ich?

+0

Mögliche Duplikat [Laravel Beziehung Fehler: Nicht definierte Eigenschaft: Illuminate \ Database \ Eloquent \ Collection :: $ id on line 1] (https://stackoverflow.com/questions/ 40022929/Laravel-Beziehung-Fehler-undefined-Eigenschaft-Illuminate-Datenbank-eloquent-col) –

Antwort

2

versuchen Wechsel zu

@foreach($company->users as $user) 
    {{$user->pivot->role->id}} 
@endforeach 
+1

Gute Antwort - wäre noch besser, wenn es ein paar Zeilen über was mit dem ursprünglichen Code des OPs falsch war, und warum dies behebt es! – sgress454

Verwandte Themen