【问题标题】:Laravel eloquent join three joins using findLaravel eloquent 使用 find 连接三个连接
【发布时间】:2015-07-25 21:48:02
【问题描述】:

您好,我希望使用 Eloquent 加入三个 Eloquent 模型,以便从 project 中检索分配的 statuses name,该 project 将保存在 assigned_project_board_statuses 中。 assigned_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/models/Project.php

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

app/models/AssignedProjectBoardStatus.php

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

app/models/Status.php

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

有什么想法可以扩展它以也加入status 模型,因为我理想地想检索name 和订单字段?

【问题讨论】:

    标签: php laravel join laravel-4 eloquent


    【解决方案1】:

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

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

    现在您可以访问

    中的 AssignedProjectBoardStatus 集合
    $project->assignedProjectBoardStatuses
    

    您可以在其中的每一个上使用

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

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 1970-01-01
      • 2018-11-06
      • 2016-07-22
      • 1970-01-01
      • 2015-05-23
      • 2015-08-19
      • 2015-09-06
      • 2019-10-24
      相关资源
      最近更新 更多