2015-07-21 16 views
13

Ho cercato di creare un semplice sistema di gestione utenti, ma continuo a colpire blocchi stradali quando si tratta di interrogare le relazioni. Ad esempio, ho utenti e ruoli e ogni volta che provo a fare una query per tutti gli utenti e i loro ruoli ottengo un errore. Quello nel titolo è solo l'ultimo che ho incontrato.Laravel 5 Interrogazione con relazioni causa "Chiamata a una funzione membro addEagerConstraints() su null" errore

il mio utente e il ruolo modelle simile a questa:

class Role extends Model 
{ 
    public function users() 
    { 
     $this->belongsToMany('\App\User', 'fk_role_user', 'role_id', 'user_id'); 
    } 
} 

class User extends Model 
{ 
    public function roles() 
    { 
     $this->belongsToMany('\App\Role', 'fk_user_role', 'user_id', 'role_id'); 
    } 
} 

La mia tabella di migrazione per molti-a-molti tra i due sguardi come questo:

public function up() 
    { 
     Schema::create('role_user', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->integer('user_id')->unsigned()->nullable(); //fk => users 
      $table->integer('role_id')->unsigned()->nullable(); //fk => roles 

      $table->foreign('fk_user_role')->references('id')->on('users')->onDelete('cascade'); 
      $table->foreign('fk_role_user')->references('id')->on('roles')->onDelete('cascade'); 
     }); 
    } 

E poi cerco di ottenere tutti i record con la loro relazione in un controller:

public function index() 
{ 
    $users = User::with('roles')->get(); 

    return $users; 
} 

Quindi ho bisogno di un altro paio di occhi per dirmi cos'è che mi manca qui?

risposta

39

Mancano dichiarazioni restituite nei metodi che definiscono le relazioni. Devono restituire la definizione della relazione.

Sostituire

public function roles() 
{ 
    $this->belongsToMany('\App\Role', 'fk_user_role', 'user_id', 'role_id'); 
} 

Con

public function roles() 
{ 
    return $this->belongsToMany('\App\Role', 'role_user', 'user_id', 'role_id'); 
} 
+1

anche per chiunque altro la lettura di questo con lo stesso problema di cui avevo bisogno per risolvere il secondo parametro da "fk_user_role" a "ROLE_USER". – Tomkarho

+1

Ora mi uccido: P ore sprecate, almeno ora non dimenticherò mai lo – Jorn

+0

stesso problema di me, passo ore a risolvere stupidi errori grazie –

Problemi correlati