2017-09-07 3 views
0

Ich habe die folgende Beziehung in User.Laravel bekommen Beziehung mit auth()

public function partner() 
{ 
    return $this->hasOne('App\Partner','partner_id'); 
} 

Und ich Zugriff auf diese Beziehung

auth()->user()->partner()->name 

Aber es gibt mir Ausnahme, wo name in partners Tabelle verfügbar:

nicht definierte Eigenschaft: Illuminate \ Database \ Eloquent \ Relations \ HasOne :: $ name`

Und das Benutzerobjekt von auth()->user()->partner() ist ebenfalls leer.

Was fehlt mir?

+0

Welche Laravel-Version verwenden? – doncadavona

Antwort

1

auth()->user()->partner() gibt die Beziehungsbindung zurück, nicht das Modell selbst.

versuchen Sie auth()->user()->partner->name stattdessen.

+0

Folgefehler: 'SQLSTATE [42S22]: Spalte nicht gefunden: 1054 Unbekannte Spalte 'partners.user_id' in 'where clause'' – Gammer

+0

Können Sie ein Bild/Schema Ihrer Datenbanktabellenstruktur hinzufügen? – Quezler

0

Ich glaube, Sie es falsch machen, Alles, was Sie tun müssen, um das zu ändern ist:

public function partner() 
{ 
    return $this->hasOne('App\Partner','partner_id'); 
} 

zu

public function partner() 
{ 
    return $this->belongsTo('App\Partner'); 
} 

Ein Benutzer zu einem Partner gehört, Ursache Partner ist eine Meta-Tabelle .

+0

Perfekt, vielen Dank – Gammer

1

Zuerst stellen Sie sicher, Setup das richtige Verhältnis:

User.php

public function partner() 
{ 
    return $this->hasOne('App\Partner'); 
} 

Partner.php

public function user() 
{ 
    return $this->belongsTo('App\User'); 
} 

an den Partner des Benutzers zuzugreifen:

// Get the user's Partner instance: 
$partner = auth()->user()->partner; 

// Access the user's partner properties: 
$partner_name = auth()->user()->partner->name; 

Überprüfen Sie auch, ob Ihre partners Tabelle die Spalte user_id enthält.