Как подключить 4 стола в Laravel 7? - PullRequest
0 голосов
/ 20 июня 2020

Итак, в основном у меня есть 4 таблицы

сотрудников , зарплаты и Сотрудники_payrolls (сводная таблица) таблица уже подключена через отношение «многие ко многим» и работает нормально. Можно ли получить basic_pay (из таблицы позиций) столбец через Position_id в таблице сотрудников (которая уже подключена через отношение многие-ко-многим) чтобы я мог выполнить расчет по таблице заработной платы , которая будет основана на служащих базисе c зарплате?

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

Вам нужно будет добавить отношение belongsTo в вашу модель Сотрудника:

/**
 * Get the employee's position.
 */
public function position()
{
    return $this->belongsTo(Position::class,'positions_id');
}

Теперь, если вы используете sh для доступа к нему, вам нужно будет сделать следующее:

//get a payroll from database
$payroll = Position::find(1);

//get your payroll employees then iterate through each one
foreach($payroll->employees as $employee) {

           //access to this employee position attributes
            $employee->position;

       }

 
0 голосов
/ 20 июня 2020

вы не можете использовать $payroll->employees->positions->basic_pay, потому что $payroll->employees это дает вам коллекцию сотрудников, каждый сотрудник имеет много должностей, поэтому, если вы выполняете $payroll->employees->positions->basic_pay, он создает коллекции в коллекции, как показано ниже:

Payroll
   Employee-1
       Position-1->basic_pay
       Position-2->basic_pay  
   Employee-2
       Position-1->basic_pay
       Position-2->basic_pay
   .
   .
   .

если вы выполняете $payroll->employees->positions->basic_pay, структура не имеет смысла в коллекции Laravel, поэтому вы сначала выполняете $payroll->employees, затем l oop через каждый и выполняете второй l oop на $employee->positions, а затем вы получить $position->basic_pay

...