→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); }
Cependant, il a été constaté que le format de date était erroné
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 ?: 'Y-m-d H:i:s'); } }
Affichez le code source et constatez queIlluminateNotificationsNotifiable
Ce trait a deux traits, parmi lesquels la méthode
de IlluminateNotificationsHasDatabaseNotifications
notifications()
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(); } }
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, 'notifiable')->orderBy('created_at', 'desc'); } }
Le problème est résolu, l'effet est le suivant :
"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!