Maison > cadre php > Laravel > Partager la solution de sérialisation de la date de notification des messages Laravel7

Partager la solution de sérialisation de la date de notification des messages Laravel7

藏色散人
Libérer: 2021-07-01 08:58:07
avant
2009 Les gens l'ont consulté

→Recommandé : "tutoriel laravel"

Étant donné que la fonction de notification de message est utilisée dans le projet, j'ai naturellement écrit le code suivant

public function index(Request $request)
{
    $notifications = \Auth::user()->notifications()->paginate($request->size);

    return $this->success($notifications);
}
Copier après la connexion

Cependant, il a été constaté que le format de date était erroné

Laravel 7 消息通知日期序列化解决方案

Mais la classe de base du modèle a utilisé le trait HasDateTimeFormatter, le code est le suivant :

<?php

namespace App\Models\Traits;

trait HasDateTimeFormatter
{
    protected function serializeDate(\DateTimeInterface $date)
    {
        return $date->format($this->dateFormat ?: &#39;Y-m-d H:i:s&#39;);
    }
}
Copier après la connexion

Affichez le code source et constatez queIlluminateNotificationsNotifiable Ce trait a deux traits, parmi lesquels la méthode
de IlluminateNotificationsHasDatabaseNotificationsnotifications() est associée à la classe IlluminateNotificationsDatabaseNotification Puisque cette classe est livrée avec Laravel, la. La méthode serializeDate ne fonctionnera naturellement pas.
Si vous trouvez le problème, résolvons-le. Définissez d'abord votre propre classe de modèle Notification, héritez de la classe IlluminateNotificationsDatabaseNotification du framework, puis référencez le trait HasDateTimeFormatter, le code est le suivant :

<?php

namespace App\Models;

use App\Models\Traits\HasDateTimeFormatter;
use Illuminate\Notifications\DatabaseNotification;

class Notification extends DatabaseNotification
{
    use HasDateTimeFormatter;

    public function notifiable()
    {
        return $this->morphTo();
    }
}
Copier après la connexion

Enfin, nous remplaçons User dans le notifications() méthode modèle, utilisez notre propre Notification modèle défini pour associer, le code est le suivant :

<?php

namespace App\Models;

use App\Models\Traits\HasDateTimeFormatter;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Tymon\JWTAuth\Contracts\JWTSubject;

class User extends Authenticatable implements JWTSubject
{
    use Notifiable, HasDateTimeFormatter;

    public function notifications()
    {
        return $this->morphMany(Notification::class, &#39;notifiable&#39;)->orderBy(&#39;created_at&#39;, &#39;desc&#39;);
    }
}
Copier après la connexion

Le problème est résolu, l'effet est le suivant :

Laravel 7 消息通知日期序列化解决方案 "Recommandations associées : Les cinq derniers didacticiels vidéo Laravel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal