Sto provando a impostare una relazione hasManyTrough con Eloquent, ma non è chiaro come funzioni dai documenti.Ha molti passaggi con la tabella pivot in Laravel4
Tabelle:
users
- id
- firstname
- ...etc
accounts
- id
- user_id
- username
- ...etc
roles
- id
- permissions
account_role
- id
- account_id
- role_id
Modelli
<?php
class User extends Eloquent {
public function account()
{
return $this->hasOne('Account');
}
// This is what I'm trying to achieve
public function roles()
{
return $this->hasManyThrough('Role', 'Account');
}
}
class Role extends Eloquent {
public function accounts()
{
return $this->belongsToMany('Account')->withTimestamps();
}
}
class Account extends Eloquent {
public function user()
{
return $this->belongsTo('User');
}
}
errore e mettere in discussione L'errore Sono gettings è: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'roles.account_id' in 'on clause'
So che posso fare qualcosa $user->account->roles
, ma voglio essere in grado di fare $user->roles
. Come si imposta correttamente?
'hasManyThrough' non funziona con molti-a-molti, controlla questa risposta: http://stackoverflow.com/questions/23788844/hasmanythrough-with-on-to-many-relationship/23789210 # 23789210. Se hai ancora domande, non esitare a chiedere. –
Soluzione piacevole, ma ho bisogno di caricare con entusiasmo per lavorare con il modello Utente. Forse c'è una soluzione nel definire il mio 'Relazione 'o qualcosa del genere. Non sono sicuro di come farlo. – DerLola
Certo, puoi estendere Eloquent e creare relazioni personalizzate, metodi di modelli e cose. Dipende da te, la risposta che ho collegato dovrebbe darti un'idea di come farlo. Ho fatto esattamente la stessa cosa per 'belongsToThrough', lavorando al contrario. –