繁体   English   中英

在Laravel Eloquent中,从父表中选择“ whereIn”

[英]In Laravel Eloquent, select “whereIn” from parent table

在我的Laravel项目(带有MySQL数据库)中,我有一些模型: Time EntriesTasksProjects

时间条目属于任务

任务属于项目

因此,每个表都包含一列为其父级的对应ID。

我有一个项目 ID数组,我试图选择通过其任务属于这些项目的时间条目

换句话说,我希望能够执行以下操作:

$timeEntries = TimeEntry::whereIn('project_id',$projectIds)->get();

但是很明显,我遇到了“列未找到”错误,因为我在时间条目表中得到的只是task_id而不是project_id

有没有一种方法可以在单个口才查询中选择所需的时间条目(基于我拥有的项目ID)? 帮助非常感谢。

在您的项目模型中添加以下方法

public function timeEntries()
{
    return $this->hasManyThrough('App\TimeEntry' , 'App\Task');
}

现在您可以获取一个项目的所有时间条目,如下所示

$project = Project::find(id);
$project->timeEntries()->get();

因此,您要说明的关系类型是直通关系( http://laravel.com/docs/5.1/eloquent-relationships#has-many-through )。

不要试图从项目->任务-> time_entries中拖下树,而是尝试抬头。

Projects::whereIn($projectIds)->with('time_entries')->get();

最终的集合将是每个项目中具有(至少应有)一个名为time_entries的字段的项目,这些字段具有所有相关时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM