使用表hasmany和belongsTo更新许多多个数据?

时间:2014-01-09 17:32:24

标签: laravel-4 eloquent has-many belongs-to

抱歉我的英文

我想要两张桌子

发票

  • ID
  • USER_ID
  • 名称
  • created_at
  • update_at

Invoicesitems

  • ID
  • INVOICE_ID
  • 标题
  • createad_at
  • update_at

模型

class Invoices extends eloquent{
   public function invoicesitems(){
       return $this->hasMany('Invoicesitem');
   }
}

class Invoicesitems extends eloquent{
   public function invoices(){
       return $this->belongsTo('Invoice');
   }
}

现在,要更新我的发票项目? 示例我的发票有5个项目,我需要更新到10个项目

首先删除我发票的所有项目并插入新的???

$invoices = Invoices::findOrFail($id);
$dataupdate = array(
  'user_id' => Input::get('user'),
  'name' => Input::get('name'),
);
$invoices->fill($dataupdate);
$invoices->save();

//确定更新发票,现在如何更新商品? 谢谢你。

1 个答案:

答案 0 :(得分:3)

如果您的业务逻辑允许 - 您只需替换发票项目。

$invoice = Invoices::findOrFail($id);
$dataupdate = array(
    'user_id' => Input::get('user'),
    'name' => Input::get('name'),
 );
 $invoice->update($dataupdate);

 // replace invoice items
 $invoice->invoicesitems()->delete();
 $invoice->invoicesitems()->create($invoiceItems);

请注意!这是非常直接的解决方案。您可以使用insert()方法而不是create()进行批量插入来改进。