SQLSTATE[HY000]:一般错误:1364field‘ategory_id’没有默认值(SQL:INSERT INTO gm(type,gram,carat,price,file,updated_at,created_at)值(bn-0003dw,3,0,2115000,1662456904_BN-0003DW.jpg,2022-09-06 16:35:04,2022-09-06 16:35:04))

我想将 Select 选项表单插入到数据库中,但出现了上面的错误.

这是我从关系数据库中 Select 选项的Blade 代码.

<select class="form-control" name="category_id">
   <option value="option_select" disabled selected>Choose</option>
   @foreach ($category as $ct)
     <option value="{{$ct->id}}" {{old('category_id') == $ct->id ? 'selected' : ''}}>{{$ct->category_name}}</option>
   @endforeach
</select>

这是用于插入到数据库中的控制器代码.

public function create()
    {
        $category   = Category::all();
        return view('backend.pages.create', compact('category'));
    }

    public function createact(Request $request)
    {
        $this->validate($request,[
            'type'          => 'required|alpha_dash',
            'category_id'   => 'required|numeric',
            'gram'          => 'required|numeric',
            'carat'         => 'required|regex:/()+/',
            'price'         => 'required|numeric',
            'file'          => 'required|file|image|mimes:jpeg,jpg|max:1048'
        ]);

        // Menyiapkan data gambar yg diupload ke variable $file
        $file = $request->file('file');
        $file_name = time()."_".$file->getClientOriginalName();

        // Isi dengan nama folder tempat kemana file diupload
        $upload_directory = 'p_gm';
        $file->move($upload_directory, $file_name);
        
        Goldmart::create([
            'type'          => $request->type,
            'category_id'   => $request->category_id,
            'gram'          => $request->gram,
            'carat'         => $request->carat,
            'price'         => $request->price,
            'file'          => $file_name
        ]);

        return redirect('/gm');
    }

这是我的通用汽车模型.

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Gm extends Model
{
    use SoftDeletes;

    protected $table = "gm";
    protected $fillable = ['type', 'category', 'gram', 'carat', 'price', 'file'];
    protected $dates = ['deleted_at'];

    public function category()
    {
        return $this->belongsTo('App\Category');
    }
}

这是我的Category模型.

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    protected $table = "category";
    protected $fillable = ['category_name'];

    public function gm()
    {
        return $this->hasOne('App\Gm');
    }
}

我试着在gm表中将CATEGORY_ID的值更改为Null,错误没有出现,但是CATEGORY_ID没有从CATEGORY表中填充id,但是Null.结果类别列为空.

推荐答案

在您的GM模型可填充数组中添加CATEGORY_ID.然后它将起作用

Laravel相关问答推荐

URL类图中的循环关系

LaravelEloquent 的模型如何将值从控制器内部的函数传递到Render()

Laravel 验证 - 不同的属性规范

如何通过单击进入 vs 代码中的类

如何在 Laravel 中填充以后执行的条件

Laravel 6 Passport 在错误的凭证上返回 400 Bad request

PHP Laravel:如何设置或获取会话数据?

Laravel 判断约束违规

如何在 AWS Elastic Beanstalk 上设置和使用 Laravel 调度?

在 Laravel Eloquent 中,limit 与 take 有什么区别?

如何对模型执行删除操作?

如何调试 Laravel 框架?

Laravel:验证 json 对象

在 Laravel 中将 Eloquent 导出到 Excel 时如何包含列标题?

如何从 Laravel 中的资源中获取图像?

在 Laravel 5.4 中将文件存储在公共目录和存储中的区别

Laravel 获取文件内容

如何判断是否在laravel中使用了分页

Laravel 中的 isDirty() 是什么意思?

在 Laravel 中判断会话超时