Laravel eloquent merges three joins using find

Hey. I am looking to use Eloquent to join the three Eloquent models to get assigned statuses namefrom projectto be stored in assigned_project_board_statuses. The table assigned_project_board_statuseshas two foreign keys, the table layout of which is below:

id|project_id|status_id|order|created_at|updated_at

project_idand status_id- foreign keys.

Models that I have:

project(table name projects), Status(table name:) statusesand AssignedProjectBoardStatus(table name:) assigned_project_board_statuses.

I can get the assigned statuses to the project by following these steps:

Project::find(3)->assignedProjectBoardStatuses;

application / models / Project.php

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

application / models / AssignedProjectBoardStatus.php

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

application / models / Status.php

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

, , Status, name order?

+4
1

:

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

AssignedProjectBoardStatus

$project->assignedProjectBoardStatuses

,

$project->assignedProjectBoardStatuses[0]->status
+3

Source: https://habr.com/ru/post/1599680/


All Articles