Pergunta

Eu acho que o título diz:Eu quero usar o ISO 8601 com fusos horários como padrão DateTime-Formato em Laravels Eloqüente.Eu tenho esse

class mEloquent extends Eloquent {

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

}

Todos os meus modelos irá estender mEloquent.Mas como devo construir as tabelas?Apenas

<?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 é normal?Como posso comparar esta dateformat?Ou eu só devem usar o padrão e salvar o fuso horário separadamente?

Foi útil?

Solução

É muito fácil se você seguir os documentos.

PHP date função de suporte ISO 8601 desde PHP5 e podemos obtê-lo, passando a 'c' caracteres de formato.

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

Laravel modelo converte atributos de data para Carbon os objetos.De carbono se estende DateTime o que tem a format função que suporta todos os date caracteres de formato.

Você pode facilmente criar um descritor de acesso (ou até mesmo um novo atributo personalizado) para alterar um atributo de data.Em seguida, use o Carbono format método para alterá-lo para ISO 8601 formato.

Assim, em um laravel modelo, podemos fazer algo assim:

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

e, então, pode acessar o atributo como este:

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

Outras dicas

Como mencionado no docs, adicionar isso para sua classe base 'mEloquent'

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

Você pode também a data de check-out serializations:https://laravel.com/docs/5.6/eloquent-serialization#date-serialization

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

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

Saída

2018-04-14T18:35:58+00:00

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top