Maison  >  Article  >  développement back-end  >  Apprenez plusieurs utilisations des événements modèles de Laravel

Apprenez plusieurs utilisations des événements modèles de Laravel

不言
不言original
2018-06-13 11:27:151539parcourir

Cet article vous présente principalement les informations pertinentes sur l'utilisation des événements modèles dans les notes d'étude de Laravel. L'article les présente en détail à travers un exemple de code. Il a une certaine valeur d'apprentissage de référence pour que tout le monde puisse apprendre ou utiliser Laravel. si vous en avez besoin, vous pouvez vous y référer. Pour référence, apprenons avec l'éditeur ci-dessous.

Préface

Cet article vous présente principalement le contenu pertinent sur l'utilisation des événements du modèle Laravel. L'article présente les événements du modèle Laravel à travers. exemple de code. Il existe de nombreuses façons de les utiliser. Je n’entrerai pas dans les détails ci-dessous.

Exemples d'utilisation

1. Simple et brut (pour les tests locaux)

Défini dans le routage :

Event::listen('eloquent.updated: App\Post',function (){
 dump('测试一下修改事件');
});
Route::post('/post/{id}', 'PostController@update');

2. Générer des événements et des auditeurs

dans EventServiceProvider Define la relation correspondante

 protected $listen = [
  'App\Events\PostEvent' => [
    'App\Listeners\PostListener',
   ],
 ];

php artisan event:generate //生成文件

Injecter la classe à opérer dans l'événement


Injectez la classe d'événement correspondante dans la méthode handle dans Listen


 public function handle(PostEvent $event)
 {
  dump('测试一下修改事件');
 }

Enfin, ajoutez l'attribut 'events' dans le post model

 protected $events = [
   'updated' => PostListener::class
 ];

3. Utiliser la méthode de démarrage du framework

Définir directement dans le modèle concerné


 public static function boot() {
  parent::boot();
  
  static::updated(function($model) {
   dump('测试一下修改事件');
  });
 }

4. Définir le trait

Si vous le souhaitez. mettre à jour ou créer des événements de plusieurs modèles Pour effectuer certaines opérations, chaque modèle ne devrait-il pas être écrit séparément ? Par exemple : Log.


trait LogRecord
{
 //注意,必须以 boot 开头
 public static function bootLogRecord()
 {
  foreach(static::getModelEvents() as $event) {
   static::$event(function ($model){
    $model->setRemind();
   });
  }
 }


 public static function getModelEvents()
 {
  if(isset(static::$recordEvents)){
   return static::$recordEvents;
  }
  return ['updated'];
 }

 public function setRemind()
 {
  dump('记录逻辑操作');
 }
}

Ensuite, l'utilisation dans le trait du modèle suffit.


• création - l'objet est prêt mais n'a pas été écrit dans la base de données


• créé - l'objet a été écrit dans la base de données


• mise à jour - l'objet a été modifié mais pas écrit dans la base de données


• mis à jour - la modification a été écrite dans la base de données


• enregistrement - l'objet a été créé ou mis à jour mais pas écrit dans la base de données


• enregistré - la création ou la mise à jour de l'objet a été écrite dans la base de données


• suppression - avant la suppression


• supprimé - après la suppression


• restauration - avant la restauration de la suppression logicielle


• restauré - après restauration de la suppression logicielle

Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de tout le monde. Pour obtenir de l'aide, veuillez faire attention au site Web PHP chinois pour plus de contenu connexe !

Recommandations associées :

Apprentissage du transfert de tableaux vers des vues dans le framework Laravel 5

Modèles et contrôleurs de Laravel 5 framework Et apprendre le processus de base des vues

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!

Déclaration:
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