laravel-5.7:SQLSTATE [HY000]:一般错误:1364字段“ category_id”没有默认值

时间:2019-01-13 20:33:26

标签: laravel eloquent laravel-5.7

我是Laravel的新手,正在尝试在keys == 0下添加Product,但是当我添加Category时,它显示此错误:

  

SQLSTATE [HY000]:常规错误:1364字段'category_id'没有默认值(SQL:插入Product ...“

最初,我添加的产品没有属于其正常使用的任何类别,现在却不在products下添加。

有人愿意向我提供其解决方案吗?

这是我的表格:

Category

这是 <form enctype="multipart/form-data" class="form-horizontal" method="post" action="{{ url('admin/add-product') }}" name="add_product" id="add_product" novalidate="novalidate">{{ csrf_field() }} <div class="control-group"> <label class="control-label">Under Category</label> <div class="controls"> <select name="category_id" id="category_id" style="width:220px;"> <?php echo $categories_drop_down; ?> </select> </div> </div> <div class="control-group"> <label class="control-label">Product Name</label> <div class="controls"> <input type="text" name="product_name" id="product_name"> </div> </div> <div class="uploader" id="uniform-undefined"><input name="image" id="image" type="file" size="19" style="opacity: 0;"><span class="filename">No file selected</span><span class="action">Choose File</span></div> div class="form-actions"> <input type="submit" value="Add Product" class="btn btn-success"> </div> </form>

ProductsController.php

ProductsController

3 个答案:

答案 0 :(得分:2)

尽管有更好的方法可以解决此问题,但直接的解决方案是设置产品的category_id字段。

$product->product_name = $data['product_name'];
$product->product_code = $data['product_code'];
$product->product_color = $data['product_color'];

// Add this:
$product->category_id = $data['category_id'];

答案 1 :(得分:1)

这里的主要问题是,在迁移过程中,category_id不可为空,这意味着应该从控制器为其分配值,您可以从控制器为其分配值,也可以转到迁移文件并添加此行

$table->integer('catagory_id')->nullable();

然后,您将迁移表,并且该表不应再次引发此错误,但是如果您有关系或想要将其连接到表但又没有关系,则我更喜欢为它分配一个值那么整个category_id就我而言都是没用的

如果要为其分配值,则应在新产品系列之后的控制器中执行以下操作:

$product->category_id = $request->input('category_id');

因为您的控制器未采用名称为

的输入值
category_id

答案 2 :(得分:-1)

正如错误所暗示的,它没有默认值,您可以通过创建迁移(或修改您拥有的迁移值)来解决它,从而使“ category_id”列为空或仅在产品中添加以下行创建:

$product->category_id = NULL;

如果需要,您可以在Laravel migration documentation

上找到有关可为空的更多信息。