Conjunto predeterminado de la base de datos DateFormat la norma ISO 8601 con las zonas horarias en Laravel
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?
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