我是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
答案 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
上找到有关可为空的更多信息。