Laravel查詢生成器-連接三個(gè)表(A一對(duì)多B,B一對(duì)多C)

我有三張表。

國家:id,country_name州:id,country_id,state_name城市:id,state_id,city_name

我想得到一個(gè)特定的國家($id=1),每個(gè)州的所有城市。我試試這個(gè)代碼。

DB::table('country as a')
   ->join('state as b', 'b.country_id', '=', 'a.id')
   ->join('city as c', 'c.state_id', '=', 'b.id')
   ->select('a.*', 'b.*', 'c.*') 
   ->where('a.id', '=', $id)
   ->get();

得到這樣的結(jié)果。

result: [
  {id: 1, country_id: 1, country_name: ABC, state_name: aaa, state_id: 0, city_name: city a1},
  {id: 2, country_id: 1, country_name: ABC, state_name: aaa, state_id: 0, city_name: city a2},
  {id: 3, country_id: 1, country_name: ABC, state_name: aaa, state_id: 0, city_name: city a3},
  {id: 4, country_id: 1, country_name: ABC, state_name: aaa, state_id: 0, city_name: city a4},
  {id: 5, country_id: 1, country_name: ABC, state_name: bbb, state_id: 1, city_name: city b1},
  {id: 6, country_id: 1, country_name: ABC, state_name: bbb, state_id: 1, city_name: city b2},
  {id: 7, country_id: 1, country_name: ABC, state_name: bbb, state_id: 1, city_name: city b3},
  {id: 8, country_id: 1, country_name: ABC, state_name: bbb, state_id: 1, city_name: city b4},
  .....
]

我希望能得到這樣的結(jié)果。

result: [
  {
    id: 1, 
    country_id: 1,
    country_name: ABC, 
    state_name: aaa, 
    state_id: 0, 
    city: [
      {city_name: city a1},
      {city_name: city a2},
      {city_name: city a3},
      {city_name: city a4}
    ]
  },
  {
    id: 2, 
    country_id: 1,
    country_name: ABC, 
    state_name: bbb, 
    state_id: 1, 
    city: [
      {city_name: city b1},
      {city_name: city b2},
      {city_name: city b3},
      {city_name: city b4}
    ]
  },
  .....
  and like that for other states.
]

也許有人能幫我給你一個(gè)新的見解。非常感謝你。

? 最佳回答:

Leveraging Eloquent Relationships

模型與關(guān)系

class Country extends Model
{
    public function states()
    {
        return $this->hasMany(State::class);
    }
}

class State extends Model
{
    public function country()
    {
        return $this->belongsTo(Country::class);
    }

    public function cities()
    {
        return $this->hasMany(City::class);
    }
}

class City extends Model
{
    public function state()
    {
        return $this->belongTo(State::class);
    }
}

Query

$countries = Country::query()
    ->with('states.cities')
    ->get();
主站蜘蛛池模板: 久久精品国产一区二区三区肥胖| 中文人妻av高清一区二区| 无码精品人妻一区二区三区AV| 国产成人精品一区二区秒拍| 国产SUV精品一区二区88L| 日韩免费一区二区三区在线| 日韩一区二区电影| 任你躁国产自任一区二区三区 | 中文字幕在线无码一区| 日韩欧美一区二区三区免费观看| 久久久91精品国产一区二区| 精品国产一区二区三区2021| 视频一区在线播放| 国产第一区二区三区在线观看| 精品人妻AV一区二区三区| 色欲精品国产一区二区三区AV| 亚洲av午夜福利精品一区人妖| 中文字幕在线观看一区二区 | 久久人妻无码一区二区| 亚洲美女一区二区三区| 亚洲午夜一区二区电影院| 老熟女五十路乱子交尾中出一区| 午夜DV内射一区二区| 久久久精品人妻一区二区三区| 国产无线乱码一区二三区| 无码一区二区三区| 亚洲天堂一区在线| 亚洲AV无码片一区二区三区| 无码国产精品一区二区免费式直播| 亚洲AV无码一区二区乱子伦| 少妇特黄A一区二区三区| 精品人妻一区二区三区浪潮在线| 国产对白精品刺激一区二区 | 在线观看一区二区三区av| 精品人妻无码一区二区色欲产成人| 亚洲色精品VR一区区三区| 国产一区二区三区乱码在线观看| 国产精品无码一区二区三区不卡| 女女同性一区二区三区四区| 视频在线一区二区三区| 国产免费一区二区三区不卡|