> Faqs > Rellenar un timestamp de Laravel Eloquent a partir de un cadena de fecha MySQL

Rellenar un timestamp de Laravel Eloquent a partir de un cadena de fecha MySQL

Tengo una cadena de fecha en el formato típico de MySQL. YYYY-MM-DD

A partir de ese string quiero poblar una columna timestamp de Laravel, es decir, un campo created_at de los que genera Eloquent en las tablas.

Quisiera saber la manera correcta de generar esa fecha en el formato necesario para que me la pille bien el ORM de Laravel. Gracias

Respuestas

Como dice Elessar, la manera más fácil de trabajar con fechas es a través de la librería Carbon de PHP.

Cuando creas un objeto Carbon lo puedes asignar perfectamente a un timestamp de Laravel, por lo que la conversión es automática. No te tienes que preocupar en nada.

Ahora bien, si tienes una fecha de MySQL, la puedes convertir así en un objeto Carbon.

$mysql_date = '2019-08-19';
$carbon_date = \Carbon\Carbon::createFromFormat('Y-m-d', $mysql_date);

Luego, una vez la tengas convertida, como te decía, la puedes asignar a un campo de timestamp de eloquent directamente. Por ejemplo este código crea un registro de un modelo Eloquent en el que hacemos un seteo del campo created_at a partir de la fecha anterior.

$doc = new App\Doc;
$doc->title = 'Un documento...';
$doc->created_at = $carbon_date;
$doc->save();

Verás que el campo timestamp created_at tiene la fecha que se ha asignado, al menos la fecha, puesto que la hora podrá tomar cualquier valor, posiblemente de la hora actual de tu sistema al crear el registro en la base de datos. Básicamente será algo como "2019-08-19 10:55:41"

Julian
1100 46 84 45

La forma más sencilla de hacerlo es a través de la liberría Carbon que usa Laravel, por la cual podrás cambiar el formato del string que indicas a un formato amigable para MySQL.

Un saludo

Elessar
5 1