我有3个表:工人,付款和私人私人可以支付一个或多个工人,工人可以收到一个或多个私人付款。payments表包含2个外键和金额。如何使用laravel在3个表中创建关系,以获取数据库中的所有信息?例如,我想要为每个工人提供他从每个私人获得的付款。
发布于 2018-10-20 17:24:08
我猜你已经知道幼体关系了。
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.发布于 2018-10-20 17:35:49
这就是如何定义Worker和Private之间的many to many关系
工作者模型
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');
}这就是检索worker的所有privates的方法
控制器函数
$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]);https://stackoverflow.com/questions/52904048
复制相似问题