2016-06-29 10 views
0

おい、あなたはこのコーヒーを持っていればいいと思う。Laravel Eloquent Relations

次の表があります。

Workshops 
- id 
- title 
- company_id 

Locations 
- id 
- name 

Workshop_Locations 
- workshop_id 
- location_id 

Company 
- id 
- name 

People 
- id 
- company_id 
- name 
- verified 

可能であれば私は上記の表からしか検証ワークショップ実施結果を作成しようとしています。彼らは企業テーブルにリンクされているので、それらは労働者テーブルによって検証され、企業テーブルはワークショップテーブルにリンクされる。

ワークショップは、認定された人物が割り当てられていることが確認されています。

+0

で検証ワークショップをフェッチすることができエステーション?何を試しましたか?これは特定の問題を助けるためのものであり、コードやチュートリアルをクラウドソースにすることはありません –

+0

"Laravelのやり方"でそれをやりたいのであれば、Eloquent関係について読む必要がありますhttps://laravel.com/docs/5.1/eloquent-relationships @GarethParkerが正しいです。コードが機能せず、その理由がわからない場合は、具体的な瞬間をお手伝いします。しかし誰もあなたのために無料でそれをコード化することはありません。 – GONG

+0

あなたは少なくとも1人の人(人)が確認された企業に所属するすべてのワークショップ、または全員が検証された企業に所属するすべてのワークショップが必要ですか? – geoandri

答えて

0

私が正しくあなたの質問を理解している場合:

$verifiedWorkshops = Workshop::select('workshops.*') 
    ->join('companies', 'workshops.company_id', '=', 'companies.id') 
    ->join('people', 'people.company_id', '=', 'companies.id') 
    ->where('people.verified', '=', true) 
    ->get() 
0

使用され、これを達成するために、より「Laraverish」方法を次のようになり、ワークショップやpeople.Theモデル間の関係「を通じて多くの持っている」

class Workshops extends Model 
{ 

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

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

    public function people() 
    { 
    return $this->hasManyThrough('App\People', 'App\Company'); 
    } 
} 

class Company extends Model 
{ 
    public function workshops() 
    { 
    return $this->hasMany('App\People'); 
    } 
} 

class People extends Model 
{ 
    public function company() 
    { 
    return $this->belongsTo('App\Company'); 
    } 
} 

class Location extends Model 
{ 

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

は、次に、あなたのquの何次のクエリ

$workshops= Workshops::whereHas('people', function ($query) { 
$query->where('verified', '=', true); 
})->get();