2017-11-22 4 views
1

Am neuen nochLaravel definierende Beziehung

Laravel Ich habe die folgenden Tabellen

user 
    id 
    first_name 
    last_name 

educations 
    id, 
    user_id //references user id 
    type 

Jetzt in meinem user Modell möchte ich einen bestimmten Benutzer educations erhalten, die

viele sein können

so a Benutzer kann viele Ausbildungen haben, aber jeder Ausbildung gehört zu einem einzigen Benutzer. Also in meinem user Modell i

public function education() 
{ 
    return $this->hasMany('App\ApplicantEducation','id','user_id'); 
} 

In meinem Education Modell habe ich haben

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

Aber die oben ausfällt, kann ich abrufen nicht Benutzer spezifischen educations

, wo ich bin falsch machen?

Antwort

1

ändern return $this->hasMany('App\ApplicantEducation','id','user_id'); zu return $this->hasMany('App\ApplicantEducation','user_id', 'id'); Sie ommit auch die id und user_id.


Als Ihr foreign_key gut ausgebildet ist, können Sie auch diesen einfachen Code rwite,

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


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

try this:
in User Modell:

public function educations() 
    { 
    return $this->hasMany('App\ApplicantEducation', 'user_id'); 
    } 

in Education Modell:

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

,

$this->hasMany('App\ApplicantEducation','id','user_id'); 

In obige Aussage erste Argument sollte Modell Sekunde Fremdschlüssel sein sollte, und die dritte ist eine andere Taste aus Bildung Modell. Hier sind zweite und dritte Argumente nicht zwingend erforderlich.

Benutzer Modell

class User...{ 
public function education() 
{ 
return $this->hasMany('App\ApplicantEducation'); 
} 

In Bildung Modell

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

hier zusätzliche Parameter sind nicht zwingend könnte Ihre zusätzlich Parameter sein erzeugt Ausgabe,

und jetzt können Sie Ihre Benutzer abrufen mit Bildung durch

$user = User::with('education')->get(); 

Dies kann alle Benutzer mit ihrer Ausbildung abrufen.
Ich hoffe es hilft, Danke, Happy Coding.

1

Sie sollten dies versuchen:

Bildung Modell

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

Benutzermodell

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