Как запросить от 3 таблиц до 1 сбора данных таблиц с помощью функции красноречивых связей по 1 модели и 1 контроллеру - PullRequest
0 голосов
/ 30 марта 2020

Вот мой запрос по умолчанию. Я хочу преобразовать Eloquent запрос

Это TransferController. php

public function index()
    {
        return Transfer::with(['employee','new_office', 'old_office','designation'])
                        ->orderby('id', 'desc')
                        ->get();
    }

Вот моя модель передачи. php

class Transfer extends Model
{
    protected $table = 'transfers';
    protected $fillable = [
        'employee_id','order_date','join_date','old_office_id', 'new_office_id',
    ];

    protected $primaryKey = 'id';
    public $timestamps = false;

    public function employee(){
        //return $this->belongsToMany(Employee::class);
        return $this->belongsTo(Employee::class, 'employee_id');
    }
    public function new_office(){
        return $this->belongsTo(Office::class, 'new_office_id');
    }
    public function old_office(){
        return $this->belongsTo(Office::class, 'old_office_id');
    }

    public function designation(){
        return $this->belongsToMany(Designation::class, 'employees','id', 'designation_id', 'employee_id');
        //I want to convert this query by eloquent feature.
        // return DB::table('designations')
        //     ->join('employees', 'designations.id', '=', 'employees.designation_id')
        //     ->join('transfers', 'employees.id', '=', 'transfers.employee_id')
        //     ->select('designations.*')
        //     ->get();
    }
}

Я не могу понять belgongToMany или hasOneThrough идеально подходит для обозначения запроса (), но другие функции в порядке

...