2017-03-26 6 views
0

私はlaravel ormに問題があります。私はテーブルC(id、....)、 テーブルB(id、A_id、C_id、.....)、 という3つのテーブルテーブルA(id、.......)を持っています。 であり、テーブルAとテーブルBは1対多数の関係を持ち、テーブルBとテーブルCは1対1の関係を持っている。 は、どのように私はしてください................hasManyからlaravelまでの使い方

答えて

0

hasManyThrough()方法を見てみましょう

class aModel { 
function b(){ 
return hasMany(app\Models\bModel'); 
} 
// i want to do this 
function c(){ 
return hasMany('App\Models\cModel'); 
} 
} 
class bModel{ 
function a(){ 
return belongsTo('App\Models\aModel); 
} 
function c(){ 
return belngsTo('App\Models\cModel'); 
} 
} 
like aModel::with(['b'])->get(); i want. 
$a = aModel::with(['c])->get(); 

誰のようにテーブルAからCにhasManyのを使用することができます。

return hasManyThrough('App\Models\cModel', 'App\Models\bModel'); 
+0

感謝を。これは動作しません –

0

ああ、実際にその少しトリッキー..私はsolutinが
アモデル::([ 'b.c'])である
..私の解決策を見つけた - >()を取得。

public function cModels() 
{ 
    return $this->hasManyThrough('App\Models\cModel', 'App\Models\bModel'); 
} 

それとも、ただnested eager loading使用することができます:

+0

は、あなたが '使用する必要があります( 'b.c') ' –

0

あなたがhasManyThrough()使用することができ、あなたの貴重な回答bradforbesため

aModel::with('bModels.cModels')->get(); 
+0

' App \ Models \ Model'の代わりに 'Model :: class'を使うのを忘れないでください:-) –

関連する問題