Функция create() вставить дату

У меня есть 4 поля: идентификатор, имя, преном, date_naissance. Когда я вставляю запись в свой phymyadmin, у меня нет проблем с файлом date_naissance.

Функция create() вставить дату

Однако, когда я пытаюсь вставить date_naissance в форму вставки, у меня появляется сообщение об ошибке.

Функция create() вставить дату

SQLSTATE[HY000]: General error: 1364 Field 'date_naissance' doesn't have a default value (SQL: insert into eleves (nom, prenom, updated_at, created_at) values (Benoit, Piret, 2019-03-07 22:31:24, 2019-03-07 22:31:24))

Ты видишь проблему ?

public function create()
{
    return view('admin.eleves.create', compact('eleves'));
}
public function store(Request $request)
{
    $request->validate([
        'nom' => 'required|string',
        'prenom' => 'required|string',
        'date_naissance' => 'required|date'
    ]);
   Eleve::create($request->all());
   return redirect()->route('eleves.index')
                    ->with('success', 'save');
}

Мой вид создать

<form class = "panel-body" action = "{{route('eleves.store')}}" method = "POST">
  @csrf
  <fieldset class = "form-group">
     <label for = "form-group-input-1">Nom</label>
     <input type = "text" name = "nom" class = "form-control" id = "form-group-input-1">
  </fieldset>

  <fieldset class = "form-group">
     <label for = "form-group-input-1">Prénom</label>
     <input type = "text" name = "prenom" class = "form-control" id = "form-group-input-1">
  </fieldset>

  <fieldset class = "form-group">
     <label for = "form-group-input-1">Date naissance</label>
     <input type = "date" name = "date_naissance" class = "form-control" id = "form-group-input-1">
  </fieldset>

  <a href = "{{route('eleves.index')}}" class = "btn btn-primary pull-right">Back</a>
  <button type = "submit" class = "btn btn-sm btn-primary">Valider</button>
</form>

Модель:

class Eleve extends Model
{
    //
    protected  $fillable = ['nom', 'prenom'];
    protected $dates = ['date_naissance'];

можешь показать код своего представления (формы)? Похоже, вы не передаете поле с именем date_naissance, и SQL не знает, как добавить значение по умолчанию, поэтому выдает ошибку

ArSeN 07.03.2019 23:38

Убедитесь, что в схеме таблицы разрешены нули для date_naissance, если только вы не можете подтвердить, что у нее всегда будет дата.

Daniel G 07.03.2019 23:43

Можешь распечатать свой $request->all() и показать? Проверьте результат дампа и убедитесь, что вы разрешаете нулевое значение по умолчанию для date_naissance.

Sundar Ban 07.03.2019 23:44

@ArSeN: я отредактировал свое первое сообщение... спасибо

user11124425 07.03.2019 23:47

Я думаю, у вас есть массив $fillable в Eleves модели, а date_naissance там нет

Shuyi 07.03.2019 23:48

@user11124425 user11124425 хорошо, спасибо, но на самом деле это мало что показывает, так как нет полей ввода (которые будут отправлены при отправке формы), как бы то ни было, можете ли вы показать форму оказанный?

ArSeN 07.03.2019 23:49

@Daniel G: У него всегда должна быть дата

user11124425 07.03.2019 23:55

@ArSeN: Действительно, я редактировал...

user11124425 08.03.2019 00:01

@user11124425 user11124425, как уже указал Shuyi, если вы хотите заполнить его, что вы делаете с Eleve::create($request->all());, вам также придется добавить ключ date_naissance в свойство $fillable

ArSeN 08.03.2019 00:04

@SundarBan: я вижу это, array:1 [▼ 0 => array:4 [▼ "_token" => "krCfSEdmggz3yKLf1DHNoXLqEGAmSi9r532Gto2z" "nom" => "Leroi" "prenom" => "Mathieu" "date_naissance" => "1990-01-01" ] ]

user11124425 08.03.2019 00:05

@ ArSeN: спасибо, Арсен :-)

user11124425 08.03.2019 00:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
11
66
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

В вашей модели

class Eleve extends Model
{
    //
    protected  $fillable = ['nom', 'prenom','date_naissance']; // missing date_naissance here.
    protected $dates = ['date_naissance'];

Вам нужно будет указать в модели атрибут fillable или guarded, так как все модели Eloquent по умолчанию защищают от массового назначения.

Fillable вы указываете, какие поля массово назначаются в вашей модели, вы можете сделать это, добавив в модель специальную переменную $fillable. Так что в модель нужно добавить еще и date_naissance:

class Eleve extends Model {
    protected $fillable = ['nom', 'prenom','date_naissance']; //only the field names inside the array can be mass-assign
    protected $dates = ['date_naissance'];
}

Подробнее: здесь легко понять Что означает «массовое назначение» в Laravel

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