J'essaie de retourner created_at
datetime de la table des utilisateurs dans la réponse JSON dans Laravel.
Dans mes databaes, il affiche la valeur comme 2016-07-18 00:00:00
mais quand j'essaie de revenir dans l'API JSON, il se convertit en
{
date: "2016-07-18 00:00:00.000000",
timezone_type: 3,
timezone: "UTC"
}
Comment puis-je résoudre ce problème?
Vous avez Carbon
dans Laravel framework qui vous aide à faire votre datetime comme vous voulez avec le code ci-dessous.
$created_at = new Carbon($value)->toDateTimeString();
passez maintenant $created_at
à la place de created_at
. exemple de code pour la table des utilisateurs (REMARQUE: non testé, vérifiez vous-même que vous devez passer un objet ou un tableau)
$user = User::find(1);
$user->created_at = new Carbon($user->created_at)->toDateTimeString();
Par défaut created_at
et updated_at
sont Carbon
objets, vous pouvez donc faire simplement:
$object->created_at->toDateTimeString();
pour revenir au format Y-m-d H:i:s
Vous pouvez changer ce comportement en ajoutant la méthode serializeUsing
Dans votre classe AppServiceProvider
pour mettre à jour le format de sérialisation json des dates, cela n'affecte que les appels api ( docs ), voici un exemple:
use Illuminate\Support\Carbon;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
Carbon::serializeUsing(function ($carbon) {
return $carbon->format('Y-m-d H:i:s');
});
}
...
}
Puisque vous souhaitez obtenir une réponse JSON, vous pouvez utiliser Eloquent API Resource pour transformer l'objet Carbon en n'importe quel format, par exemple:
return [
'created_at' => $this->created_at->toDateTimeString(),
....
];