次のテーブルと関係を持つデータベースがあります。
広告1-1
車 m-1
モデルm-1
ブランド
広告を取得したい場合は、次のように使用できます。
Advert::find(1);
車の詳細が必要な場合は、以下を使用できます。
Advert::find(1)->with('Car');
ただし、(Carとの関係に従って)モデルの詳細も必要な場合、構文は次のようになります。
Advert::find(1)->with('Car')->with('Model');
どうもありがとう
公式 documentation の「Eager Loading」にあります
複数の関係:
$books = Book::with('author', 'publisher')->get();
ネストされた関係:
$books = Book::with('author.contacts')->get();
だからあなたのために:
Advert::find(1)->with('Car.Model')->get();
まず、関係を作成する必要があります。
<?php
class Advert extends Eloquent {
public function car()
{
return $this->belongsTo('Car');
}
}
class Car extends Eloquent {
public function model()
{
return $this->belongsTo('Model');
}
}
class Model extends Eloquent {
public function brand()
{
return $this->belongsTo('Brand');
}
public function cars()
{
return $this->hasMany('Car');
}
}
class Brand extends Eloquent {
public function models()
{
return $this->hasMany('Model');
}
}
次に、この方法でアクセスする必要があります。
echo Advert::find(1)->car->model->brand->name;
しかし、Laravelはそれらをそのように推測するので、テーブルフィールドはそうである必要があります。
id (for all tables)
car_id
model_id
brand_id
または、関係でそれらを指定する必要があります。