首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLSTATE[23000]:完整性约束违反: 1048列'product_id‘不能在laravel和VUE JS上使用

SQLSTATE[23000]:完整性约束违反: 1048列'product_id‘不能在laravel和VUE JS上使用
EN

Stack Overflow用户
提问于 2019-01-22 07:35:55
回答 4查看 301关注 0票数 0

我尝试使用vue.js表单和laravel保存数据,但是我得到了这样的错误

代码语言:javascript
复制
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'product_id' cannot be nul

这是我的控制器..。

代码语言:javascript
复制
 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

代码语言:javascript
复制
    <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">

请帮助我的代码出了问题..。三叶草

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-01-22 09:36:32

product_id是存在的,但是您没有正确地访问它。从您的Vue表单中,我们可以明显地看到您如何命名每个字段;

据我理解,如果您是dd($request->input()),您将收到如下所示,这是的一种形式--产品的数组

代码语言:javascript
复制
"product" => [
    [0] => [
        "product_id" => 1,
        "product_site_id" => 1,
        "qty" => 10
    ],
    [1] => [
        "product_id" => 2,
        "product_site_id" => 2,
        "qty" => 5
    ]
]

我相信你有一个多个领域的产品,你想要创造。为此,需要在product数组中循环:

代码语言:javascript
复制
foreach($request->product as $product) {
    $this->productStockRepository->create($product);
}

注意事项:如果您的字段名等于您的列名,则不需要手动分配。例如,您可以像上面这样做,而不是如下所示:

代码语言:javascript
复制
$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,这使得它更易读,特别是在执行循环时。考虑遵循优美可读的语法。

代码语言:javascript
复制
foreach($request->products as $product) {
    $this->productStockRepository->create($product);
}

注意到单个product来自products列表吗?这是有意义的,并帮助其他程序员更好地阅读您的代码。

先决条件

就像其他人提到的那样,确保product_id$fillable中被提及。

票数 1
EN

Stack Overflow用户

发布于 2019-01-22 08:19:36

将product_id添加到模型的可填充数组中。

代码语言:javascript
复制
class X extends Model
{    
    protected $fillable = [
        'x',
        'y',
        ...,
        'product_id'
    ];
}
票数 0
EN

Stack Overflow用户

发布于 2019-01-22 08:21:49

使数据库表中的product_id列为可空

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54303312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档