【发布时间】:2014-05-14 21:22:35
【问题描述】:
我正在努力让 Eloquent ORM 产生我需要的结果。我有三个模型,作业、阶段和团队。
工作模式
public function phases()
{
return $this->hasMany('Eloquent\Models\Phase', 'job_id', 'job_id');
}
阶段模型
public function job()
{
return $this->belongsTo('Eloquent\Models\Job', 'job_id', 'job_id');
}
public function teams()
{
return $this->hasMany('Eloquent\Models\Team', 'phase_id', 'phase_id');
}
团队模型
public function phase()
{
return $this->belongsTo('Eloquent\Models\Phase', 'phase_id', 'phase_id');
}
当我执行查询时
$query = Eloquent\Models\Job::with("Phases.Teams");
$result = $query->get();
我有 40 个工作,其中包括 50 个阶段和 75 个团队。都很好。
当我执行查询时
$query = Eloquent\Models\Job::with(array("Phases.Teams" => function($query)
{
$query->whereRaw("teams.team_member_quota > 5");
}));
我得到一个包含 40 个工作的集合,其中包括 50 个阶段和 20 个团队。似乎我仍然获得了所有的 Jobs 和 Phases,但只有团队被过滤掉了。
我想收集只有团队的 team_member_quota > 5 的作业,并且其中只有团队的 team_member_quota > 5 的阶段,以及阶段只有团队的 team_member_quota > 5.
Eloquent ORM 可以做到这一点吗?
【问题讨论】: