Laravel雄辩连接三个连接使用find


Laravel eloquent join three joins using find

嗨,我希望使用Eloquent来加入三个Eloquent模型,以便从将在assigned_project_board_statuses中举行的project中检索指定的statuses nameassigned_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;

app/模型/Project.php

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

app/模型/AssignedProjectBoardStatus.php

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

app/模型/Status.php

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

如果我想检索name和订单字段,那么我可以扩展它来加入status模型,有什么想法吗?

您可以快速加载所有相关模型:

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

现在您可以访问 assigndprojectboardstatus 中的集合

$project->assignedProjectBoardStatuses
你可以使用

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