首页 > 解决方案 > Laravel 插入默认值而不是通过请求发送的数据

问题描述

我的 Laravel 应用程序面临一个特殊问题,即当我将数据插入数据库时​​,它总是插入默认值,而不是通过发布请求发送的数据。所以我在将它们插入数据库之前 dd() 值并显示正确的数据。但是在数据库上,它总是在迁移文件中插入默认值。

相同的代码适用于另一个模式。

HTML 表单

<div class="form-row">
    <div class="col-md-6 mb-3">
        <label for="is_free">Is Free</label>
        <select class="form-control" name="is_free" required>
            <option value="1">Free</option>
            <option value="0">Pro Only</option>
        </select>
        @error('is_free')
        <div class="text-danger mt-2 small ">{{ $message }}</div>
        @enderror
    </div>
</div>

移民

public function up()
{
    Schema::create('chapters', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->string('slug');
        $table->string('description');
        $table->mediumText('content');
        $table->tinyInteger('is_free')->default(1);
        $table->timestamps();
    });
}

控制器

Chapter::create([
    'title' => $request->title,
    'slug' => $request->slug,
    'description' => $request->description,
    'content' => $request->content,
    'is_free' => $request->is_free,
]);

标签: laravellaravel-migrations

解决方案


在您的章节模型中,确保您拥有$fillable具有正确属性的属性:

class Chapter extends Model
{
 protected $fillable = ['title','slug','description','content','is_free'];
....
}

推荐阅读