Laravel многие ко многим с колонкой в ​​сводной таблице - PullRequest
0 голосов
/ 20 октября 2018

У меня есть 3 таблицы: работник, платежи и частное лицо. Частное лицо может платить одному или нескольким работникам, а работник может получать платежи от одного или нескольких рядовых.Таблица платежей содержит 2 внешних ключа и сумму.Как я могу создать отношения в 3 таблицах с laravel, чтобы получить всю информацию в БД?Например, я хочу, чтобы за каждого работника он получал выплаты от каждого частного лица с суммой.

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Вот как вы определяете many to many отношение между Worker и Private

Модель работника

public function privates()
{
    return $this->belongsToMany(Private::class, 'payments', 'worker_id', 'private_id')
        ->withPivot('amount');
}

Частная модель

public function workers()
{
    return $this->belongsToMany(Worker::class, 'payments', 'worker_id', 'private_id')
        ->withPivot('amount');
}

так вы можете получить все privates из worker

Функция контроллера

$privates = $worker->privates;
// this '$privates' contains the 'pivot' table values which contains the 'amount'.

этокак сэкономить сумму.

Функция контроллера

// first $private and $worker need to have saved.
// and then attach particular $worker as below.
$private->attach($worker_id, ['amount' => 1200.00]);
0 голосов
/ 20 октября 2018

Я предполагаю, что вы уже знаете отношения laravel.

Worker.php

public function privates()
{
    return $this->belongsToMany('App\Private')->withPivot('amount');
}

Private.php

public function workers()
{
    return $this->belongsToMany('App\Worker')->withPivot('amount');
}

тогда в вашем контроллере

$private = Private::create();
$worker = Worker::create();
$amount = 1000;
$private->workers()->attach($worker->id, ['amount' => '$amount']);
                                            ^^^-column in your payment table.
...