Pregunta

Tengo un campo más en la base de datos sobre el created_at y updated_at como TIMESTAMP el nombre del campo es fecha.

Así que sobrescribí el método. getDates() en mi modelo elocuente porque quería que ese campo fuera instanciado desde Carbon.

public function getDates()
{
   return ['date','created_at','updated_at'];
}

Pero cuando voy a crear un nuevo registro en la base de datos me arroja una excepción:

InvalidArgumentException Se encontraron datos inesperados.Se encontraron datos inesperados.Se encontraron datos inesperados.

PD:el valor enviado desde el formulario está en formato UE: d-m-Y h:i

No sé cómo solucionar este problema. Se agradece cualquier sugerencia.

¿Fue útil?

Solución

La matriz devuelta de Getdates se fusionó con Dafault uno que resultó en:

['created_at','updated_at','deleted_at','date','created_at','updated_at'];

Así que use solo 'fecha' allí y debería estar bien.


Intente configurar un mutador para 'Fecha' para convertir los datos de la entrada en formato de marca de tiempo. El error que obtienes no está en elocuente sino el carbono.

public function setDateAttribute($value)
{
    $this->attributes['date'] = Carbon\Carbon::createFromFormat('d-m-Y h:i', $value);
}

También hay un error en los documentos, ya que Betdates define los accesorios de la fecha, no los mutadores.

Otros consejos

Intenta esto:

Carbon::createFromFormat('d.m.Y H:i', $request->publishdate);    

No puede usar su formato "D-M-Y H: i"

Debe usar uno de los: UNIX TIVESTAMP, CADERA DE FECHA (Y-M-D), Cadena de tiempo de fecha, DateTime / Carbon Instance

https://laravel.com/docs/4.2/ELOQUENTENT#ACESSORS-y mutadores

A pesar de que es un problema de un año y estoy colocando mi opinión para que alguien aún está luchando incluso después de configurar el mutador.

Si el elemento de fecha de entrada HTML pasa la fecha en formato Atom (1975-12-25T14: 15: 16-05: 00), el mutador de fecha no lo ayudará.Debe aplicar la siguiente corrección en Illuminate \ Database \ Elocent \ Model Class en línea # 2848 para que funcione (en Laravel # 5).

$value = Carbon::createFromFormat($format, (new DateTime($value))->format('Y-m-d H:i:s'));

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top