Laravel雄辩地使用find加入三个连接

时间:2015-07-25 21:48:02

标签: php laravel join laravel-4 eloquent

您好我希望使用Eloquent加入三个Eloquent模型,以便从statuses中检索指定的name project assigned_project_board_statusesassigned_project_board_statuses表有两个表模式的外键:

id|project_id|status_id|order|created_at|updated_at

project_idstatus_id是外键。

我的模特是:

Project(表名projects),Status(表名:statuses)和AssignedProjectBoardStatus(表名:assigned_project_board_statuses)。

我可以通过执行以下操作来检索已分配的项目状态:

Project::find(3)->assignedProjectBoardStatuses;

应用程序/模型/ Project.php

public function assignedProjectBoardStatuses() {
        return $this->hasMany('AssignedProjectBoardStatus','project_id')->orderBy('order','asc');
    }

应用程序/模型/ AssignedProjectBoardStatus.php

public function projects() {
    return $this->belongsTo('Project');
}
public function statuses() {
    return $this->belongsTo('Status');
}

应用程序/模型/ Status.php

public function assignedProjectBoardStatus() {
        return $this->hasMany('AssignedProjectBoardStatus');
}

我是否可以将此扩展为加入status模型的任何想法,因为我希望检索name和订单字段?

1 个答案:

答案 0 :(得分:3)

您可以急切地加载所有相关模型:

$project = Project::with(['assignedProjectBoardStatuses', 'assignedProjectBoardStatuses.statuses'])->find(3);

现在您可以访问 AssignedProjectBoardStatus 的集合

$project->assignedProjectBoardStatuses

并且每个人都可以使用

访问状态
$project->assignedProjectBoardStatuses[0]->status