对Eloquent的原始查询

时间:2014-06-29 15:44:07

标签: laravel laravel-4 eloquent

我的项目和(成员,团队)表之间存在多态的多对多关系。基本上可以将成员或团队分配给项目。成员归入团队。

我想选择分配给当前成员所在团队的项目。我可以通过这样的原始查询得到它:

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]
);

如何以Eloquent形式编写此原始查询?

我的数据库:

项目表:

  

ID,
  PROJECT_ID,
  名称

会员表:

  

ID,
  名称

小组表:

  

ID,
  名称

Member_Team表: (可以通过此表将成员分组到团队中)

  

member_id,
  TEAM_ID

ProjectVisibles表:  (项目可以通过此表分配给成员或团队(多态多对多)

  

PROJECT_ID,
  projectvisible_id (会员ID或团队ID)
  projectvisible_type (成员或团队)

1 个答案:

答案 0 :(得分:0)

这将是这样的东西

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();