我想在将产品租给客户时更新产品租赁计数。 网站的所有者可以租用多件东西。我通过使用Ajax克隆来实现这一点。
现在,当有人租用了2把椅子和1张桌子时,我想更新两种产品的products_leased行。我该怎么做?
我得到的错误:
`SQLSTATE[01000]: Warning: 1265 Data truncated for column 'product_leased' at row 1 (SQL: update `products` set `product_leased` = 3 5, `updated_at` = 2017-06-07 19:57:03 where `id` = 1)`
我的控制器:
public function create_order($id) {
$customer = Customer::find($id);
$pr = Product::get();
$rent_from = Request::input('rent_from');
$rent_till = Request::input('rent_till');
$productArray = Request::get('product_name');
$productCountArray = Request::get('product_count');
$rentProduct = new cRent;
$rentProduct->customer_id = $customer->id;
$rentProduct->rent_from = $rent_from;
$rentProduct->rent_till = $rent_till;
$rentProduct->rented_products = implode(', ', $productArray);
$rentProduct->rented_products_count = implode(', ', $productCountArray);
$rentProduct->save();
$pru = Product::find($id);
$pru->product_leased = implode(' ', $productCountArray);
$pru->update();
return back();
}
上述代码仅在租用一个产品时有效。不是我租2件产品的时候。
提前致谢。
答案 0 :(得分:0)
$rentProduct = new cRent;
上面的代码表示只有一个cRent off-course实例,如果你想让另一个事务与数据库有不同的值或数据需要另一个实例
我认为你想要的是这样的
public function create_order($id) {
$customer = Customer::find($id);
$pr = Product::get();
$rent_from = Request::input('rent_from');
$rent_till = Request::input('rent_till');
$productArray = Request::get('product_name');
$productCountArray = Request::get('product_count');
foreache($productArray as $prod){
$rentProduct = new cRent;
$rentProduct->customer_id = $customer->id;
$rentProduct->rent_from = $rent_from;
$rentProduct->rent_till = $rent_till;
$rentProduct->rented_products = $prod
$rentProduct->rented_products_count = //not sure in this line
$rentProduct->save();
}
$pru = Product::find($id);
$pru->product_leased = implode(' ', $productCountArray);
$pru->update();
return back();
}
答案 1 :(得分:0)
为什么要将相同的$ id传递给
$customer = Customer::find($id);
和
$pru = Product::find($id);
为什么不为每个产品创建单独的租赁记录,并将它们作为一对多关联,而不是将产品名称和计数破坏并存储在一起?假设数组中的产品名称和产品计数行,可能会产生以下影响:
foreach(array_combine($productArray, $productCountArray) as $product_name => $count){
$product = Product::where('name', $product_name)->first();
$rentProduct = new cRent;
$rentProduct->customer_id = $customer->id;
$rentProduct->rent_from = $rent_from;
$rentProduct->rent_till = $rent_till;
$rentProduct->product_id = $product->id
$rentProduct->count = $count;
$rentProduct->save();
}
更好的是,不要传递产品名称,而是从表单中传递产品ID。