2016-06-16 4 views
0

私はLaravelプロジェクトを持っており、私はEloquentをモデルに使用しています。Laravel 5のEloquent Model継承のための最善の方法は?

のは、私は3つの関連テーブルがあるとしましょう:私は私のUserモデルを継承したい

User 
Demographics 
Roles 

を両方Demographicsと1対1の関係として、外部キーに基づいてRoles

これを達成する最も効率的な/エレガントな/安全な/パフォーマンスの高い/最もクリーンな方法について、ご意見をお待ちしております。

+0

は、あなたが "継承" とはどういう意味ですか?すべての関係はどうですか? "最高の"何に比べて? –

+1

この場合、私は継承よりも組成が好きです... – jojonas

+1

私は同意します - 形質は多分でしょうか? – swatkins

答えて

1

あなたは基本的な関係を探していて、それらの関係を読み込んでいます。
はこれを試してみてください:

class User extends Model 
{ 
    public function demographic() 
    { 
     return $this->hasOne('App\Demographic'); 
    } 
    public function role() 
    { 
     return $this->hasOne('App\Role'); 
    } 
} 
class Demographic extends Model 
{ 
    public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 
} 
class Role extends Model 
{ 
    public function user() 
    { 
     return $this->belongsTo('App\User'); 
    } 
} 

そして、すべての関係をユーザにアクセスするには:

$user = User::with(['demographic', 'role'])->find(1); 

var_dump($user->demographic); // returns the related Demographic model 
var_dump($user->role); // returns the related Role model 
+0

ありがとう!これは私がすでに行っていた実装であり、前に使用した実装です。これは、Laravelのリレーショナルデータの "熱心な読み込み"を処理する最もクリーンな方法のようです。 – fskirschbaum

関連する問題