Поле Laravel 5.4 не имеет значения по умолчанию без использования create

Очень странное поведение с 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 Поле 'title' не имеет значения по умолчанию (SQL: вставить в statuses (weight, color, suspension) значения (-9, #FFD700, 0))

Так что это не проблема $fillable!

У меня есть переводческий пакет Laravel Transhable. Просто когда перестанешь его использовать от Status модель, отлично экономит!

Однако у меня есть другая модель, которая использует тот же пакет тем же способом, но может успешно сохранять новые записи!

Я не смог выяснить причину этой проблемы.

Обновить

Единственное рабочее решение до сих пор, это установить 'strict' => false, в конфигурации MySQL. Однако я до сих пор не могу понять, что происходит?!

1 ответ

Вы заметили, что вы использовали, как это $status->title = request('title'); так что поменяй $status->title = $request->title;

Другие вопросы по тегам