首页 文章

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

提问于
浏览
4

嗨我希望使用Eloquent加入三个Eloquent模型,以便从 project 中检索分配的 statuses name ,它将保存在 assigned_project_board_statuses 中 . assigned_project_board_statuses 表有两个表模式如下的外键:

id|project_id|status_id|order|created_at|updated_at

project_idstatus_id 是外键 .

我的模型是:

Project (表名 projects ),23379437(表名: 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 回答

  • 3

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

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

    现在您可以访问 AssignedProjectBoardStatus 的集合了

    $project->assignedProjectBoardStatuses
    

    在每个人上你都可以使用 Status

    $project->assignedProjectBoardStatuses[0]->status
    

相关问题