我尝试使用vue.js表单和laravel保存数据,但是我得到了这样的错误
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'product_id' cannot be nul这是我的控制器..。
public function order(Request $request, $id)
{
$data['id'] = $request->input('product');
$data['product_id'] = $request->input('product_id');
$data['product_site_id'] = $request->input('product_site_id');
$data['qty'] = $request->input('qty');
$data['qty_booking'] = $request->input('qty_booking');
$data['qty_order'] = $request->input('qty_order');
$this->productStockRepository->create($data);
return true;
} 这是我的表单绑定vue.js
<input type="hidden" :name="'product[' + buy_data.id + '][id]'" :value="buy_data.id">
<input type="hidden" :name="'product[' + buy_data.id + '][product_id]'" :value="buy_data.id">
<input type="hidden" :name="'product[' + buy_data.id + '][product_site_id]'" :value="buy_data.id">
<input type="hidden" :name="'product[' + buy_data.id + '][qty]'" :value="buy_data.qty">请帮助我的代码出了问题..。三叶草
发布于 2019-01-22 09:36:32
product_id是存在的,但是您没有正确地访问它。从您的Vue表单中,我们可以明显地看到您如何命名每个字段;
据我理解,如果您是dd($request->input()),您将收到如下所示,这是的一种形式--产品的数组
"product" => [
[0] => [
"product_id" => 1,
"product_site_id" => 1,
"qty" => 10
],
[1] => [
"product_id" => 2,
"product_site_id" => 2,
"qty" => 5
]
]我相信你有一个多个领域的产品,你想要创造。为此,需要在product数组中循环:
foreach($request->product as $product) {
$this->productStockRepository->create($product);
}注意事项:如果您的字段名等于您的列名,则不需要手动分配。例如,您可以像上面这样做,而不是如下所示:
$data['id'] = $request->input('product');
$data['product_id'] = $request->input('product_id');
$data['product_site_id'] = $request->input('product_site_id');
// ...您也可以调用$request->product而不是$request->input('product')
此外,我建议将products重命名为复数products,这使得它更易读,特别是在执行循环时。考虑遵循优美可读的语法。
foreach($request->products as $product) {
$this->productStockRepository->create($product);
}注意到单个product来自products列表吗?这是有意义的,并帮助其他程序员更好地阅读您的代码。
先决条件
就像其他人提到的那样,确保product_id在$fillable中被提及。
发布于 2019-01-22 08:19:36
将product_id添加到模型的可填充数组中。
class X extends Model
{
protected $fillable = [
'x',
'y',
...,
'product_id'
];
}发布于 2019-01-22 08:21:49
使数据库表中的product_id列为可空
https://stackoverflow.com/questions/54303312
复制相似问题