Laravel 插入默认值而不是通过请求发送的数据

Posted

技术标签:

【中文标题】Laravel 插入默认值而不是通过请求发送的数据【英文标题】:Laravel insert default value instead of data sent via request 【发布时间】:2021-12-04 07:03:01 【问题描述】:

我在我的 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,
]);

【问题讨论】:

【参考方案1】:

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

class Chapter extends Model

 protected $fillable = ['title','slug','description','content','is_free'];
....

【讨论】:

谢谢。这就是问题所在。我太傻了。 发生了,请将答案标记为已接受,以便我们将此问题视为“已回答”

以上是关于Laravel 插入默认值而不是通过请求发送的数据的主要内容,如果未能解决你的问题,请参考以下文章

SQL:使用NULL值与默认值

猫鼬返回默认值而不是空值

在选择选项 laravel 上保存名称值而不是 id

如何在 Laravel 5.5 中将数据插入表格并获取电子邮件通知?

Jenkins 远程参数化构建始终使用默认参数值而不是传递的参数值

如果请求值为空,Laravel 设置默认值