2016-06-19 8 views
0

Laravel 5の次のクエリを雄弁なモデルに変換するにはどうすればよいですか?3つのテーブルを持つクエリビルダから雄弁なモデルへの変換

$city = DB::table('cities') 
     ->join('provinces', 'cities.province_id', '=', 'provinces.id') 
     ->join('countries', 'provinces.country_id', '=', 'countries.id') 
     ->select('cities.name as City','provinces.name as Province','countries.name as Country') 
     ->where('cities.isDelete', '=', '0') 
     ->get(); 

私のテーブル構造は以下のとおりです。

  1. 国: ID、 名

  2. 県: ID、 名、 COUNTRY_ID

  3. 市: ID 、 名、 province_idは

私は2つのテーブルで説得力のモデルで作業を行ってきたが、私は3つのテーブルを管理する方法がわかりません。 P.P.私はモデルで私の関係を適切に定義しました。

答えて

0

これらのコードを試してください。詳細情報についてはhttps://laravel.com/docs/5.2/eloquent-relationships

//Create this method in city model 

public function province() 
    { 
     return $this->belongsToMany('App\Province'); 
    } 

//Create this method in province model 

public function country() 
    { 
     return $this->belongsTo('App\Country'); 
    } 

は今、このクエリ

$city = DB::table('cities')->with('province','province.country') 
     ->where('cities.isDelete', '=', '0') 
     ->get(); 

を試してみてください参照してくださいザ・データは、ネストされた形態であろう結果

like cities 
     -province 
     ->country 
+0

うん。そのとおりです。結果は入れ子になっています。しかし、私は選択した部分で上記のように特定の列だけを必要とします。あなたのクエリを使用すると、テーブル全体がネストされた形式で返されます。 –

+0

データを反復処理する必要があります。特定の形式の日付を取得するか、またはコレクション方法を取得する必要があります。これを行うためのデータを単に出力してください。 'foreach($ city as $ data){echo $ data-> name; foreach($ data-> province from $ province){エコー$州 - >名前; echo $ province-> country-> name}} ' –

関連する問題