Laravel一对多质量Dissociate()

时间:2018-10-20 11:49:09

标签: laravel eloquent

我有一个账单,其中有很多交易具有以下关系:

结算单:

Select operation.
1.Price of your luggage
2.Exit
Enter choice(1/2:1
Enter wieght of your first  luggage 12
Your first item is free

交易模型:

public function transaction()
{
    return $this->belongsTo(Transaction::class, 'transaction_id');
}

在交易失败的情况下,我需要从该交易中删除所有账单,并将transaction_id设置为null。

可以通过以下方式实现:

public function Bills()
{
    return $this->hasMany(Bill::class, 'transaction_id');
}

有什么方法可以执行大规模dissociate()吗?也许像这样:

foreach($transaction->bills as $b) {
    $b->dissociate()->save();
}

1 个答案:

答案 0 :(得分:0)

去那里:

$transaction = Transaction::where('your specifications')->first();
$transaction->bills->delete();
$transaction->save()

更新

我不认为直接在整个馆藏上可能分离。 也许您可以在事务模型上创建一个函数,例如:

public function dissociateBills(){

  foreach($this->bills as $b) {
    $b->dissociate()->save();
  }

$this->save();

}

,然后从控制器调用特定交易的函数,例如:

$transaction = Transaction::where('your specifications')->first();
$transaction->dissociateBills();