2016-06-19 16 views
0

Ich habe bereits verschiedene Dinge ausprobiert, aber ich kann das nicht zum Laufen bringen. Ich möchte in der Lage, so etwas wie dieses {{ $user->city->name }}anglesTo() gibt keine Beziehungen für Benutzer zurück

Mein Benutzermodell zu machen:

<?php 

namespace App; 

use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
    public $timestamps = false; 
    protected $table = 'users'; 
    protected $fillable = ['id_city', 'name', 'email', 'password', 'admin']; 
    protected $hidden = ['password', 'remember_token']; 

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

Und das ist meine Stadt Modell:

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class City extends Model 
{ 
    public $timestamps = false; 
    protected $table = 'cities'; 
    protected $fillable = ['name', 'slug']; 

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

Und ich versuche {{ $user->city->name }} auf meine verwenden Ansicht, aber es funktioniert nicht, es gibt einen Fehler ErrorException: Versuchen, die Eigenschaft von Nicht-Objekt (View: .../views/app/text.blade.php) zu erhalten.

Was soll ich tun?

+0

Ist 'user' der Klasse' User'? Ist "Stadt" ein Aufruf zur Funktion dieses Namens? Dann braucht es() 's. Wie wäre es mit uns [MCVE]? Dann müssen wir nicht weiter Fragen stellen, um herauszufinden, was vor sich geht. wir können es für uns selbst sehen. –

Antwort

1

In Ihrer belongsTo-Beziehung versucht Eloquent standardmäßig city_id als Fremdschlüssel zu verwenden, da Sie das zweite Argument nicht übergeben.

Allerdings haben Sie nach Ihren ausfüllbaren Attributen als Fremdschlüssel tatsächlich id_city.

Für die User-Modell,

public function city() 
{ 
    return $this->belongsTo('App\City', 'id_city'); 
} 

Für das Stadtmodell,

public function users(){ 
    return $this->hasMany('App\User', 'id_city', 'id'); 
} 
+0

Danke für die Antwort. Genau das, was ich gesucht habe! Just gemacht diese Änderungen und es funktioniert perfekt. – noeyeat

+0

Willkommen, dann hoffe ich, dass Sie dies als akzeptiert markieren. – Burak

Verwandte Themen