Dati imprevisti trovati durante il risparmio su Eloquente / Laravel
-
21-12-2019 - |
Domanda
Ho un altro campo sul database tramite created_at
e updated_at
come TIMESTAMP
Il nome del campo è data.
Così ho sovrascritto il metodo getDates()
sul mio modello Eloquente perché volevo che il campo sia istanziato da carbonio.
public function getDates()
{
return ['date','created_at','updated_at'];
}
.
Ma quando vado a creare un nuovo record sul database mi lancia un'eccezione:
.InvalidARGUMENTOException Dati imprevisti trovati.Dati imprevisti trovati. Dati imprevisti trovati.
PS: il valore inviato dal modulo è in formato UE: d-m-Y h:i
Non so come capire questo problema qualsiasi suggerimento è apprezzato
Soluzione
L'array è stato restituito da GetDates è stato fuso con la DAFAULT uno con conseguente:
['created_at','updated_at','deleted_at','date','created_at','updated_at'];
.
Quindi usa solo 'Data' lì e dovrebbe andare bene.
.
Prova a impostare un mutatore per 'Data' per convertire i dati da Input in TimeStamp Formato. L'errore che ottieni non è su eloquente ma carbonio.
public function setDateAttribute($value)
{
$this->attributes['date'] = Carbon\Carbon::createFromFormat('d-m-Y h:i', $value);
}
.
Inoltre c'è un errore nei documenti, poiché GetDates definisce gli accessori della data, non i mutatori ..
Altri suggerimenti
Prova questo:
Carbon::createFromFormat('d.m.Y H:i', $request->publishdate);
. Non puoi usare il tuo formato "D-M-Y H: I"
È necessario utilizzare uno di questi: UNIX Timestamp, Data String (Y-M-D), String Data-Time, DateTime / Istance di carbonio
Anche se il suo problema di un anno e sto mettendo il mio contributo per chiunque abbia ancora lottato anche dopo aver impostato il mutatore.
Se l'elemento Data di ingresso HTML passa la data in formato Atom (1975-12-25T14: 15: 16-05: 00) Quindi il mutatore della data non aiuterà.È necessario applicare la seguente correzione in Illuminate \ database \ Eloquent \ Model Class at Line # 2848 per farla funzionare (a Laravel # 5).
$value = Carbon::createFromFormat($format, (new DateTime($value))->format('Y-m-d H:i:s'));
.