mySQL Datumsformat ist Y-m-d
Zur Lokalisierung Gründen Benutzer Datumsfelder meiner Laravel 5.4 Anwendung in der d-m-Y
Form einreichen, die gespeichert werden - Mutator aber Datumsfeld nicht in Insert-Anweisung mutiert ausführen zu einem detenutodal
Feld in mySQL.Fehler bei Eloquent Modellherstellung - Laravel 5.4
Ich verwendete Mutatoren, um die beiden Formate zu konvertieren, in meinem Attore
Modell, so.
<?php
namespace App;
//use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;
class Attore extends Model
{
protected $dates = [
'created_at',
'updated_at',
'deleted_at',
'detenutodal'
];
/**
* detenutodal: DB Y-m-d => m-d-Y
*
* @param date $value
* @return date
*/
public function getDetenutodalAttribute($value)
{
return Carbon::parse($value)->format('d-m-Y');
}
/**
* detenutodal: m-d-Y => DB Y-m-d
*
* @param date $value
* @return date
*/
public function setDetenutodalAttribute($value)
{
return Carbon::parse($value)->format('Y-m-d');
}
}
wie Sie sehen können, das detenutodal
Attribut auf den $dates
hinzugefügt wird es in eine Carbon
Instanz zu machen (nicht erklären, es keinen Unterschied zu machen scheint. Eigentlich war ich nicht in der Lage detenutodal
verhalten sich wie ein Carbon-Instanz haben, und ich hatte ausdrücklich Carbon::parse
zu nennen)
ich erstelle ein neues Attore
Modell in AttoreController
wie folgt aus:
$this->validate(request(), [
'detenutodal' =>'nullable|date_format:"d-m-Y"',
]);
Attore::create(request()->all());
Das Detenutodal-Feld ist korrekt validiert, und ich bin sicher, dass der Mutator als I aufgerufen wird. der korrekte detenutodal
Wert wird an ihn übergeben - z. 30-06-1943
und es gibt 1943-06-30
zurück.
aber die create
nicht mit diesem Fehler:
SQLSTATE[HY000]: General error: 1364 Field 'detenutodal' doesn't have a default value (SQL: insert into `attores` (`nome`, `enteopersona`, `paternita`, `maternita`, `annonascita`, `luogonascita`, `residenza`, `professione`, `gradoistruzione`, `updated_at`, `created_at`) values (Aminto Pestalozzi, persona, Agenore Pestalozzi, Giacinta Tortelazzi, 1910, Caorso in Strà' lva', Via Morigi 4, Caorso, Bracciante, Scuola professionale, 2017-05-18 14:23:22, 2017-05-18 14:23:22))
Wie Sie sehen können, klagt mySQL, dass detenutodal
keinen Standardwert als detenutodal
hat aus der Abfrage vollständig verschwunden, während ich erwarten würde, dass der Mutator korrekt aktualisiert das Feld vor dem Aufruf von Attore::create
und fügte es der Abfrage hinzu.
Kann jemand etwas Licht abwerfen?
Dank
dieses ' $ this-> Attribute [ 'detenutodal'] ' die Lösung war. war auf der Suche nach dem Problem an einem falschen Ort und nicht in einem schlechten Copypaste Fehler .... danke – RedSash