Laravel 5.4 Field没有使用create的默认值

时间:2017-10-14 07:09:51

标签: php laravel-5 model laravel-5.4 laravel-translatable

save()非常奇怪的行为。我没有使用方法create。这是创建新的记录代码:

public function store(Request $request)
    {
        $this->validate($request,[
            'title' => 'required',
            'weight' => 'required|integer|max:99,min:-99',
            'color' => 'required|regex:/^#[0-9A-F]{6}$/',
            'suspension' => 'required|integer|in:0,1'
        ]);        
        $status = new Status();
        $status->weight = $request->weight;
        $status->title = request('title');
       // dd($request->title);

        $status->color = $request->color;
        $status->suspension = $request->suspension;
        $status->description = $request->description;
        $status->save();
        $request->session()->flash('status','success');
        $request->session()->flash('msg',__('Status has benn created Successfully'));
        return redirect('/status');

    }

但是,我收到了有关title字段的以下消息:

  

SQLSTATE [HY000]:常规错误:1364字段'标题'没有   默认值(SQL:插入statusesweightcolor,   suspension)值(-9,#FFD700,0))

所以这不是$fillable的问题!

我有翻译包Laravel Translatable。就在从Status模型停止使用时,它可以保存得很好!

然而我有另一个模型以相同的方式使用相同的包,但它可以成功保存新记录!

我无法弄清楚这个问题的根本原因。

更新

到目前为止唯一可行的解​​决方案是在MySQL配置中设置'strict' => false,。但是,我仍然无法理解发生了什么?!

1 个答案:

答案 0 :(得分:0)

您是否注意到您使用了$status->title = request('title');这样的内容,因此请将其更改为$status->title = $request->title;