У меня есть эта миграция:
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 (..) -> это не работает, потому что я получаю в виде строки вместо отметки времени!