Maison cadre php Laravel Explication détaillée de deux méthodes d'événements du modèle Laravel

Explication détaillée de deux méthodes d'événements du modèle Laravel

Jul 23, 2021 pm 03:03 PM
laravel php

Lorsque nous traitons quotidiennement certains événements d'opération utilisateur, nous devons parfois les enregistrer pour référence ultérieure ou pour des statistiques Big Data.


Laravel est très pratique à gérer dans les événements modèles : https://laravel-china.org/docs/laravel/5.5/eloquent#events


Les événements modèles de Laravel ont deux manières,

  • setdispatchesEventsÉvénement de mappage de propriétés classes
  • Utilisez des observateurs pour enregistrer des événements. Voici le deuxième type
  • Créez un nouveau modèle

php artisan make:model Log

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class Log extends Model
{
    protected $fillable = [&#39;user_name&#39;, &#39;user_id&#39;, &#39;url&#39;, &#39;event&#39;, &#39;method&#39;, &#39;table&#39;, &#39;description&#39;];
}
Copier après la connexion
  • Créez une table de migration :

php artisan make:migration create_logs_table

  • La structure de la table est à peu près comme ceci, qui peut être utilisé selon les besoins Design
<?php use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateLogsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create(&#39;logs&#39;, function (Blueprint $table) {
            $table->engine = 'InnoDB';
            $table-&gt;increments('id');
            $table-&gt;string('user_id')-&gt;comment('操作人的ID');
            $table-&gt;string('user_name')-&gt;comment('操作人的名字,方便直接查阅');
            $table-&gt;string('url')-&gt;comment('当前操作的URL');
            $table-&gt;string('method')-&gt;comment('当前操作的请求方法');
            $table-&gt;string('event')-&gt;comment('当前操作的事件,create,update,delete');
            $table-&gt;string('table')-&gt;comment('操作的表');
            $table-&gt;string('description')-&gt;default('');
            $table-&gt;timestamps();
        });

        DB::statement("ALTER TABLE `logs` comment '操作日志表'");
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('logs');
    }
}
Copier après la connexion
  • Exécutez la migration pour générer la table

php artisan migrate

  • Créez un nouveau fournisseur de services pour enregistrer uniformément tous les observateurs d'événements modèles (vous pourrez choisir un nom plus vivant plus tard)

php artisan make:provider ObserverLogServiceProvider

  • to/config/app.php L'enregistrement du providersarray dans

Explication détaillée de deux méthodes dévénements du modèle Laravel

  • Créez un nouveau dossier app dans le Observers répertoire pour stocker l'observateur du modèle, créez une nouvelle classe de base LogBaseServer et construisez les attributs de base dans le constructeur (CLI est dû au fait qu'il n'y a pas d'exécution utilisateur lors de l'exécution à partir de la ligne de commande)

Explication détaillée de deux méthodes dévénements du modèle Laravel

  • Créez un nouvel observateur pour hériter de la classe de baseLogBaseServer (modèle Utilisateur, le nom de la méthode doit correspondre à l'événement dans le document)

Explication détaillée de deux méthodes dévénements du modèle Laravel

  • Accédez au fournisseur de services nouvellement créé ObserverLogServiceProvider et exécutez

Explication détaillée de deux méthodes dévénements du modèle Laravel

  • pour enregistrer des événements pour les modèles requis (j'en ai beaucoup , et cela ressemblera probablement à ça dans le futur)

Explication détaillée de deux méthodes dévénements du modèle Laravel

  • Ensuite, nous déclenchons certains événements (ajouter, supprimer, modifier, les données du tableau sont disponibles)

Explication détaillée de deux méthodes dévénements du modèle Laravel


  • L'insertion d'associations plusieurs-à-plusieurs ne déclenchera pas le modèle (comme la attachméthode)
  • Cela est nécessaire pour le moment. Créez vous-même une nouvelle classe d'événements à simuler (voici une description approximative de l'attribution d'autorisations aux rôles)

1. Liez l'attribut EventServiceProvider dans listen à l'événement

Explication détaillée de deux méthodes dévénements du modèle Laravel

2. Injectez deux paramètres dans l'événement PermissionRoleEvent, l'un est le rôle, l'autre est le tableau renvoyé par attach ou detach

Explication détaillée de deux méthodes dévénements du modèle Laravel

3. L'écouteur d'événementPermissionRoleEventLog hérite également de la classe de baseLogBaseServer, ici elle est parcourue en fonction de l'identifiant du tableau entrant, puis crée un journal

Explication détaillée de deux méthodes dévénements du modèle Laravel

4.

Plus Gérer les événements de connexion et de déconnexion avec élégance Explication détaillée de deux méthodes dévénements du modèle Laravel

1. Liez l'attribut
dans
    à une classe bien gérée

EventServiceProvidersubscribe

2. Explication détaillée de deux méthodes dévénements du modèle Laravel3. L'effet est le suivant :

Explication détaillée de deux méthodes dévénements du modèle Laravel

Recommandations associées : Les cinq derniers didacticiels vidéo LaravelExplication détaillée de deux méthodes dévénements du modèle 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!

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

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Musée à deux points: toutes les expositions et où les trouver
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Musée à deux points: toutes les expositions et où les trouver
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Date et heure de CakePHP

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Téléchargement de fichiers CakePHP

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Routage CakePHP

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

Discuter de CakePHP

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Configuration du projet CakePHP

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

Guide rapide CakePHP

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Comment configurer Visual Studio Code (VS Code) pour le développement PHP

See all articles