假设我有一张发票的表格。它有像$ product [$ key],$ quantity [$ key]这样的订单项。因此,当提交表单时,输入看起来像
{
customer_id : "214"
product_id: [ "1","5", "6" ],
quantity: ["34", "1", "54"]
}
我有一个详细信息表的模型。我一直在做的是迭代它并创建一个详细信息对象,然后像这样保存它
foreach($product as $key=>$p)
{
if($p)
{
$t = new Details;
$t->product = $p;
$t->quantity = $quantity[$key];
$t->save();
}
}
我猜测有一种方法可以提高效率。就像直接从输入创建一组细节一样,但我不知道如何实现这个
答案 0 :(得分:0)
您可以通过批量分配来实例化模型。
$details = new Details(['product_id'=>'1','quantity'=>'34']);
您还可以使用模型中的$ guarded变量指定不希望进行批量分配的表格列。
查看Laravel的文档中的质量分配:http://laravel.com/docs/eloquent#mass-assignment
对于您的特定问题,您似乎需要使用其他数组的元素构建输入数组。
答案 1 :(得分:0)
似乎不可能。 Here是泰勒回应问题请求。似乎问题是当时无法发射事件是不可能的。我刚刚结束了
$d = array();
foreach ($details as $detail) {
$d[] = new OrderDetail($detail);
}
$order->details()->saveMany($d);