Laravel 5.4 字段没有默认值

2022-08-30 12:45:25

我遇到了这个错误,我检查的谷歌结果都与我的问题没有相似。

我有一个包含类 Deal、User 和 Matchs 的应用程序

一笔交易有很多匹配。用户有许多匹配项。用户有许多交易。

我正在尝试使用我的 Deal 对象创建新的 Match

$deal->matches()->create(['user_id'=>$id]);

这是我的匹配类,我已经定义了所有需要的关系

class Match extends Model
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $guarded = [];
    public $timestamps = false;
    public $expired_on = "";


    public static function boot()
    {
        parent::boot();

        static::creating(function ($model) {
            $model->matched_on = $model->freshTimestamp();
        });
    }

    public function __construct(){
        $d = (new \DateTime($this->matched_on))->modify('+1 day');
        $this->expired_on = $d->format('Y-m-d H:i:s');
    }


    /**
     * Get the user that owns the match.
     */
    public function user()
    {
        return $this->belongsTo('App\User');
    }

    /**
     * Get the deal that owns the match.
     */
    public function deal()
    {
        return $this->belongsTo('App\Deal');
    }
}

当我尝试创建新匹配项时,我一直收到此错误。

查询连接中的异常.php行 647:SQLSTATE[HY000]:常规错误:1364 字段“user_id”没有默认值(SQL:插入到 () 值 (1)中)matchesdeal_id

我已将其保护为空数组,可能是什么问题?


答案 1

删除数组并改为添加:guardedfillable

protected $fillable = ['user_id', 'deal_id'];

答案 2

如果要恢复到以前的行为,请更新您的

配置/数据库.php

文件并为您的连接设置。'strict' => false


推荐