Modello eloquente di Laravel: il model estende il model

è ansible estendere un model eloquente di laravel 4 con un altro model, diciamo che ho un model utente che estende la class eloquente e inoltre c'è una seconda class, una class di amministratore che estende la class utente?

Se ho appena collegato la class di amministratori all'utente, dovrei accedere agli attributi degli amministratori ottenendo prima l'attributo amministratore dell'utente e quindi gli attributi degli amministratori.

MODIFICARE:

Diciamo che ho l'amministratore che non estende l'utente. Dovrei accedere ad esempio al numero di telefono (un attributo degli amministratori) come $user = User::find(1); $phone = $user->administrator->phone; $user = User::find(1); $phone = $user->administrator->phone; ma lasciando che l'amministratore estenda l'utente, sono in grado di accedere al numero di telefono direttamente come questo, forse $user = Administrator::find(1); (Si noti che l'id passato per trovare l'amministratore è lo stesso di quello che uso per get l'utente. Normalmente dovrei passare l'id reale della voce nel database Administrator) $phone = $user->phone; Allo stesso tempo, sarebbe ansible accedere ad un attributo della class utente, ad es. $phone = $user->email;

o forse c'è una soluzione migliore per get questo o non ha senso usarlo in questo modo, se è così, sentitevi liberi di dirmelo

Questa è una buona idea in linea di principio, una ctriggers idea nella pratica. Se entrambi i templates utilizzano la stessa tabella e l'unica differenza è un field, non è necessario aggiungere l'inquinamento del model. Peggio ancora, dovresti modificare il modo in cui Laravel gestisce le relazioni (uno-a-molti) per restituire in modo intelligente un object Amministratore o Utente quando gli utenti passano attraverso altri templates.

Considera invece di fare quanto segue:

  class User extends \Laravel\Eloquent { public function isAdministrator() { return !!$this->is_admin; } public static function findAdministrator($r=false) { if ($r) return self::where("is_admin","=",true)->where("id","=",(int)$r); else return self::where("is_admin","=",true); } } 

In questo modo si aprono i due nuovi methods sul model: isAdministrator , che restituisce boolean true se l'utente è un amministratore, boolean falso altrimenti. findAdministrator , che si comport come find ma seleziona selettivamente gli amministratori.

Questo ti permette di non avere due templates per ciò che è essenzialmente una relazione (un amministratore rimane un utente, dopo tutto). Permette anche di individuare facilmente ciò di cui hai bisogno attraverso utili methods atomici.