2014-06-29 3 views
0

J'ai une relation polymorphique de plusieurs-à-plusieurs entre mes projets et les tables (membres, équipes). Fondamentalement, un membre ou une équipe peut être affecté à un projet. Et les membres sont regroupés en équipes. .Requête brute à Eloquent

Je veux sélectionner les projets qui sont affectés à l'équipe que membre actuel est que je peux obtenir par requête brute comme ceci:

DB::select(
    DB::raw(' 
    SELECT DISTINT project_id FROM projectvisibles PV 
     WHERE PV.projectvisible_type = "Team" 
     AND PV.projectvisible_id IN (
      SELECT team_id FROM member_team 
      WHERE member_id = :id) 
    '), ['id' => $id] 
); 

Comment puis-je écrire cette requête sous forme brute Eloquent?

Mon DB:

Table Projets:

id

,
project_id,
Nom

Membres Tableau:

id,
nom

équipes Tableau:

id

,
nom

Member_Team Tableau:(membres peuvent être regroupés sous des équipes , via cette table)

member_id,
team_id

ProjectVisibles Tableau: (projets peuvent être attribués à des membres ou des équipes via ce tableau (polymorphique many-to-many)

project_id,
projectvisible e_id (id membre ou l'équipe id),
projectvisible_type (membre ou équipe)

+0

Regardez ce http://stackoverflow.com/ questions/16815551/comment-faire-cela-dans-laravel-sous-requête-où-dans –

Répondre

0

Ce sera quelque chose de ce genre

Db::table('projectvisibles')->where('projectvisible_type', '=', 'Team')->whereIn('projectvisible_id', function($query) use (& $id) 
{ 
    $query->select('team_id')->from('member_team')->where('member_id', '=', $id); 
})->get(); 
Questions connexes