検索
ホームページPHPフレームワークLaravelLaravelモデルのイベントの2つの方法を詳しく解説

ユーザー操作イベントを日常的に扱う場合、時々必要になることがあります。後で参照したり、ビッグ データの統計情報を得るために、それらを記録します。


Laravel はモデルイベントでの処理に非常に便利です: https://laravel-china.org/docs/laravel/5.5/eloquent#events


Laravel のモデルイベントには 2 つの方法があります。新しいモデル

  • php 職人の作成:モデル ログ
<?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;];
}
  • 移行テーブルの作成:
  • php Artisan make:migration create_logs_table

      テーブルの構造は大まかに次のとおりです。必要に応じて設計できます
    <?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->increments('id');
                $table->string('user_id')->comment('操作人的ID');
                $table->string('user_name')->comment('操作人的名字,方便直接查阅');
                $table->string('url')->comment('当前操作的URL');
                $table->string('method')->comment('当前操作的请求方法');
                $table->string('event')->comment('当前操作的事件,create,update,delete');
                $table->string('table')->comment('操作的表');
                $table->string('description')->default('');
                $table->timestamps();
            });
    
            DB::statement("ALTER TABLE `logs` comment '操作日志表'");
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::dropIfExists('logs');
        }
    }

    移行を実行します。テーブルを生成します

      php 職人移行
      すべてのモデル イベント オブザーバーを均一に登録する新しいサービス プロバイダーを作成します (後続の名前はより明確になります) )

    php 職人 make:provider ObserverLogServiceProvider

    • /config/app の
    • providers
    配列に追加します。 php

    登録(大まかに図のように)

    • # に新しいフォルダーを作成します#app
    ディレクトリ

    Observers モデル オブザーバーを格納し、新しい基本クラス LogBaseServerLaravelモデルのイベントの2つの方法を詳しく解説 を作成し、コンストラクターで基本属性を構築します (CLI は、コマンド ライン)

    • ##基本クラス LogBaseServer
    • (
    User

    モデル、メソッド 名前はドキュメント内のイベントに対応する必要があります) Laravelモデルのイベントの2つの方法を詳しく解説

    • ##新しいサービス プロバイダーObserverLogServiceProvider実行中

    Laravelモデルのイベントの2つの方法を詳しく解説

      # 必要なモデルのイベントを登録します (Iかなりの数があります。おそらく将来はこのようになるでしょう)

    Laravelモデルのイベントの2つの方法を詳しく解説

    次に、いくつかのイベントをトリガーします。 (テーブルデータの追加、削除、変更が可能です)

    Laravelモデルのイベントの2つの方法を詳しく解説

    ##多対多くの関連付け挿入ではモデル (
      attach
    • メソッドなど) はトリガーされません
    現時点では、シミュレートする新しいイベント クラスを作成する必要があります (ここでは、アクセス許可を割り当てる方法の大まかな概要を示します)役割)

    1. Laravelモデルのイベントの2つの方法を詳しく解説EventServiceProvider

    listen
    属性はイベントにバインドされます
    2. イベント

    PermissionRoleEvent パラメーターに 2 つ注入します。1 つはロール、もう 1 つは attach または detach# によって返される配列です。

    Laravelモデルのイベントの2つの方法を詳しく解説

    #

    3. イベント リスナー PermissionRoleEventLog も基本クラス LogBaseServer を継承しており、ここでは受信配列 ID に従って走査され、ログ

    # が作成されます。 Laravelモデルのイベントの2つの方法を詳しく解説

    ##4. 次に、イベント

    Laravelモデルのイベントの2つの方法を詳しく解説


    を適用します。
      Update ログイン イベントとログアウト イベントを適切に処理する
    • #1.
    EventServiceProvider

    subscribe 属性を適切に処理されるクラス ## にバインドします。

    Laravelモデルのイベントの2つの方法を詳しく解説##2. イベント リスニング クラスのメソッド

    # #3. 効果後は次のようになります: Laravelモデルのイベントの2つの方法を詳しく解説

    Laravelモデルのイベントの2つの方法を詳しく解説

    #関連する推奨事項:
  • 最新の 5 つの Laravel ビデオ チュートリアル

    以上がLaravelモデルのイベントの2つの方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明
    この記事はsegmentfaultで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
    Laravelの最新バージョンは何ですか?Laravelの最新バージョンは何ですか?Apr 24, 2025 pm 05:17 PM

    laravel10、releaseonfebruary7,2023、isThelateStversion.itfeatures:1)改善された改善とnewReportmethexceptionhandler、2)拡張サプロポートフォーフプP8.1FeatureslikeNums、and3)

    最新のLaravelバージョンはどのように開発を簡素化しますか?最新のLaravelバージョンはどのように開発を簡素化しますか?Apr 24, 2025 pm 05:01 PM

    ThelatestlaravelversionEnhancesDevelopments:1)SimplifiedRoutingImplicitModelbinding、2)EnhancedEloquentCapabilitiesWithNewQueryMethods、and3)supportformdernphpeaturesliekenamedarguments、makedingdingingindenjoyableを改善しました。

    最新のLaravelバージョンのリリースノートはどこにありますか?最新のLaravelバージョンのリリースノートはどこにありますか?Apr 24, 2025 pm 04:53 PM

    laravel.com/docsで最新のLaravelバージョンのリリースノートを見つけることができます。 1)リリースノート新しい機能、バグの修正、改善に関する詳細情報を提供します。 2)新しい機能の適用を理解するのに役立つ例と説明が含まれています。 3)新機能の潜在的な複雑さと後方互換性の問題に注意してください。 4)リリースノートの定期的なレビューは、それを更新し続け、イノベーションを刺激することができます。

    リモートツールキット:分散チームに接続されたままにするための必須ツールリモートツールキット:分散チームに接続されたままにするための必須ツールApr 24, 2025 pm 04:37 PM

    the EssentialToolsforStayingConnedIndIndistRibutedTeamSClude:1)communicationToolslikezoom、Microsoftteams、Slack、anddiscord foreffectivecommunication;

    Laravelの影響:Web開発の簡素化Laravelの影響:Web開発の簡素化Apr 21, 2025 am 12:18 AM

    Laravelは、Web開発プロセスを簡素化し、強力な機能を提供することで際立っています。その利点には、1)簡潔な構文と強力なORMシステム、2)効率的なルーティングと認証システム、3)豊富なサードパーティライブラリサポート。開発者はエレガントなコードの作成に集中し、開発効率を向上させることができます。

    Laravel:フロントエンドまたはバックエンド?フレームワークの役割を明確にしますLaravel:フロントエンドまたはバックエンド?フレームワークの役割を明確にしますApr 21, 2025 am 12:17 AM

    laravelispredomintylyabackendframework、Designeforerver-sidelogic、databasemanagement、およびapidevelopmentが、BladeTemplatesで開発されたものです。

    Laravel vs. Python:パフォーマンスとスケーラビリティの探索Laravel vs. Python:パフォーマンスとスケーラビリティの探索Apr 21, 2025 am 12:16 AM

    LaravelとPythonには、パフォーマンスとスケーラビリティの点で独自の利点と短所があります。 Laravelは非同期処理とキューイングシステムを通じてパフォーマンスを向上させますが、PHPの制限により、高い並行性が存在する場合はボトルネックがある場合があります。 Pythonは、非同期フレームワークと強力なライブラリエコシステムでうまく機能しますが、Multi-Threaded環境のGILの影響を受けます。

    Laravel vs. Python(フレームワーク付き):比較分析Laravel vs. Python(フレームワーク付き):比較分析Apr 21, 2025 am 12:15 AM

    Laravelは、チームがPHPに精通しており、豊富な機能を必要とするプロジェクトに適していますが、Python Frameworksはプロジェクトの要件に依存します。 1.Laravelは、迅速な開発と柔軟性を必要とするプロジェクトに適したエレガントな構文とリッチな機能を提供します。 2。Djangoは、「バッテリー包含」の概念のため、複雑なアプリケーションに適しています。 3.Flaskは、高速プロトタイプや小規模プロジェクトに適しており、柔軟性が非常に高くなります。

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    SecLists

    SecLists

    SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

    PhpStorm Mac バージョン

    PhpStorm Mac バージョン

    最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

    WebStorm Mac版

    WebStorm Mac版

    便利なJavaScript開発ツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、