我在官方文档上找不到任何内容。
我需要在$product_count
数据透视表
invoice_product
$product_ids = [1,2,3];
$product_count = [1,1,1];
$invoice->product()->attach($product_ids, $product_count); // don't work
SQLSTATE [42S22]:未找到列:1054'字段列表'中的未知列'0'(SQL:插入
invoice_product
(0
,created_at
,{{1} },invoice_id
,product_id
,updated_at
)值(2,2016-04-26 15:33:57,437,1500125,2016-04-26 15:33:57, 1),(2,2016-04-26 15:33:57,437,5121100,2016-04-26 15:33:57,1))
在第二个arg期待一个字符串,我应该怎么做呢。
1
preg_replace():参数不匹配,pattern是一个字符串,而replacement是一个数组
更新,所以当我尝试
时 $product_ids = [1,2,3];
$product_count = [array('product_count'=>2), array('product_count'=>3), array('product_count'=>4)];
$invoice->product()->attach($product_ids, $product_count); // don't work
这会将静态2放在所有invoice_product中,如何将其作为数组b / c插入每个产品计数需要不同?
答案 0 :(得分:2)
假设您的数据库字段为:count
invoice_product表
invoice_id
product_id
count
产品型号
public function invoices() {
return $this->belongsToMany('App\Invoice')->withPivot('count');
}
发票型号
public function products() {
return $this->belongsToMany('App\Product')->withPivot('count');
}
在您的控制器中
//$invoice->products()->attach([1 => ['count' => 1]]);
在一般情况下,您必须附上:
[
$productId1 => ['count' => $countId1],
$productId2 => ['count' => $countId2],
]
在您的情况下,您必须执行以下操作:
$product_ids = [1,2,3];
$product_count = [1,1,1];
$attachements = [];
foreach ($product_ids as $index => $productId) {
$attachements[$productId] = ['count' => $product_count[$index]];
}
$invoice->products()->attach($attachements);
答案 1 :(得分:0)
所以,显然我需要将第一个arg作为一个与col名称匹配的关联数组,
$product_ids = [];
$product_count = [];
foreach($products as $product) {
array_push($product_ids, array('product_id'=>$product->id, 'product_count'=>$product->product_count));
}
$invoice->product()->attach($product_ids);