Формат даты и времени и уникальное правило - PullRequest
0 голосов
/ 25 мая 2019

У меня есть эта миграция:

   Schema::create('atp_players', function (Blueprint $table) {
        $table->bigIncrements('id');

        $table->string('first_name');
        $table->string('last_name');
        $table->date('birthdate');
        $table->bigInteger('geo_country_id')->unsigned();
        $table->boolean('retired')->default(0);

        $table->softDeletes();
        $table->timestamps();

        $table->foreign('geo_country_id')->references('id')->on('geo_countries')->onDelete('cascade')->onUpdate('cascade');
    });

Моя первая проблема - когда я сохраняю экземпляр, я получаю все поля в виде строк.

Результат почтальона:

  {
    "first_name": "Tomas",
    "last_name": "berdych",
    "birthdate": "1988-08-10",
    "geo_country_id": "1",
    "updated_at": "2019-05-25 14:13:41",
    "created_at": "2019-05-25 14:13:41",
    "id": 12
  }

Контроллер:

 public function store(ATPPlayerRequest $request)
  {
    return ATPPlayer::create($request->all());
  }

И вторая проблема заключается в том, что уникальное правило не работает с форматом d-m-Y.

 return [
        'first_name' => ['required'],
        'last_name' => ['required'],
        'birthdate' => ['required', 'date','date_format:d-m-Y', 'unique:atp_players,birthdate'],
        'geo_country_id' => ['required','exists:geo_countries,id']
    ];

В модели я использую аксессор:

   public function setBirthdateAttribute($value)
   {
    $this->attributes['birthdate'] = date('Y-m-d', strtotime($value));
   }

Если я использую мутатор, чтобы отформатировать созданный_ или удаленный_ат

$ value-> format (..) -> это не работает, потому что я получаю в виде строки вместо отметки времени!

1 Ответ

2 голосов
/ 25 мая 2019

Попробуйте принудительно набрать типы наложением на модель . Как:

    protected $casts = [
        'geo_country_id' => 'integer',
        'birthdate' => 'date',
        ...
    ];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...