2016-05-18 14 views

答えて

2

First link

Second link

Query Builder

DB::table("country") 
->join('city', 'city.country_code', '=', 'country.user_id') 
->join('address', 'address.city_id', '=', 'city.id') 
->select('country.name as country') 
->where('address.id', 1) 
->get(); 

Eloquent

Country::with(['city','address' => function($query){ 
    return $query->where('id', 1) 
}]) 
->select('country.name as country') 
->get(); 
+0

助けてくれてありがとう!クエリービルダメソッドが実行されていますが、Eloquentウェイが表示されます 未定義メソッドを呼び出す\ Database \ Query \ Builder :: city() –

+0

@wahidNahiyan 'city'と' address'はCountryモデルのリレーションです。 。 –

+0

はい、大丈夫です。大プロジェクトでは、多くの開発者が働いているように、モデルを管理するのが難しく、経験が少なく、さらにいくつかのものがあります。私は、クエリービルダーのアプローチはかなり簡単で理解しやすいと思いますEloquentはModel上で独自のメソッドと宣言を持っています。あなたの意見は何ですか? もう一度お返事ありがとうございます! –

2

私はAndrey Lutscevich雄弁な部分からの回答を変更します

Country::select('country.name as country')->has('city') 
    ->whereHas('address', function ($query) 
    { 
    $query->where('id', 1); 
    }) 
    ->get(); 

クエリ関係存在モデルのレコードにアクセスする場合は、あなたがに基づいて検索結果を制限したいことがあり 関係有りの使用hasその場合

WhereHas methods put "where" conditions on your has queries

+0

助けてくれてありがとうございますが、表示されます 未定義のメソッドを呼び出す\ Database \ Query \ Builder :: city() –

+0

@WahidNahiyanモデル内にリレーションシップを作成する必要があります –