Conjunto predeterminado de la base de datos DateFormat la norma ISO 8601 con las zonas horarias en Laravel

StackOverflow https://stackoverflow.com//questions/25023790

Pregunta

Creo que el título lo dice:Quiero utilizar la norma ISO 8601 con zonas horarias como predeterminado DateTime-Formato de Laravels Elocuente.Tengo este

class mEloquent extends Eloquent {

   protected function getDateFormat()
   {
       return 'YYYY-MM-DDThh:mm:ss.sTZD';
   }

}

Todos mis modelos se extenderá mEloquent.Pero, ¿cómo debo construir las tablas?Sólo

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;

class CreateUsersTable extends Migration {

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('users', function(Blueprint $table)
    {
        $table->increments('id');
        $table->string('firstName');
        $table->string('lastName');
        $table->string('email')->unique();
        $table->string('password');
        $table->timestamps();
    });
} ......

como es normal?¿Cómo puedo comparar este dateformat?O si acaso acabo de usar la predeterminada y guardar la zona horaria por separado?

¿Fue útil?

Solución

Es muy fácil si sigues los documentos.

PHP date la función admite ISO 8601 desde PHP5 y la podemos obtener por el paso de la 'c' formato de carácter.

http://php.net/manual/en/function.date.php

Laravel modelo convierte atributos de fecha a Carbon objetos.De carbono se extiende DateTime que tiene la format la función que apoya todas las date formato de caracteres.

Usted puede crear fácilmente un descriptor de acceso (o incluso un nuevo atributo personalizado) para cambiar un atributo de fecha.A continuación, utilice el Carbono format método para cambiar a ISO 8601 formato.

Así, en un laravel modelo, podemos hacer algo como esto:

public function getPublishedAt8601Attribute()
{
    return $this->published_at->format('c');
}

y, a continuación, podemos acceder al atributo como este:

// Prints something like: 2016-10-13T21:48:00+03:00
echo $post->published_at_8601;

Otros consejos

Como se mencionó en los documentos, agregue esto a su clase de base 'Melocelocente'

/**
 * The storage format of the model's date columns.
 *
 * @var string
 */
protected $dateFormat = 'c';

También puede verificar las serializaciones de la fecha: https://laravel.com/docs/5.6/ELOQUENT-SERIALIZICIONESS#DATE-serialización

$date = Carbon::now();
echo $date->toW3cString();

$date = $this->repository->find($id);
echo $date->created_at->toW3cString();

Salida

2018-04-14118: 35: 58 + 00: 00

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