<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 模型事件 ## 模型事件 模型事件是指在進行模型的寫入操作的時候觸發的操作行為,包括模型的`save`方法和`delete`方法。 > 模型事件只在調用模型的方法生效,使用查詢構造器操作是無效的 模型支持如下事件: 事件描述快捷方法before\_insert新增前beforeInsertafter\_insert新增后afterInsertbefore\_update更新前beforeUpdateafter\_update更新后afterUpdatebefore\_write寫入前beforeWriteafter\_write寫入后afterWritebefore\_delete刪除前beforeDeleteafter\_delete刪除后afterDeletebefore\_restore恢復前(`V5.1.13+`)beforeRestoreafter\_restore恢復后(`V5.1.13+`)afterRestore使用方法如下: ``` <?php namespace app\index\model; use think\Model; class User extends Model { public static function init() { self::event('before_insert', function ($user) { if (1 != $user->status) { return false; } }); } } ``` 注冊的回調方法支持傳入一個參數(當前的模型對象實例),但支持依賴注入的方式增加額外參數。 并且`before_write`、`before_insert`、 `before_update` 、`before_delete`事件方法如果返回false,則不會繼續執行。 支持給一個位置注冊多個回調方法,例如: ``` User::event('before_insert', function ($user) { if ($user->status != 1) { return false; } }); // 注冊回調到beforeInsert函數 User::event('before_insert', 'beforeInsert'); ``` ## 快捷注冊 系統提供了內置的事件注冊的快捷方法,你可以統一在`init`方法中進行模型事件定義: ``` <?php namespace app\index\model; use think\Model; class User extends Model { protected static function init() { self::beforeInsert(function ($user) { if ($user->status != 1) { return false; } }); } } ``` ## 事件觀察者 `V5.1.13+`版本開始,可以給模型注冊一個事件觀察者,例如: ``` <?php namespace app\index\model; use think\Model; class User extends Model { protected $observerClass = 'app\index\event\User'; } ``` 或者在模型的`init`方法里面手動注冊 ``` <?php namespace app\index\model; use think\Model; class User extends Model { protected static function init() { self::observe(app\index\event\User::class); } } ``` `User`觀察者類定義如下: ``` <?php namespace app\index\event; use app\index\model\Profile; class User { public function beforeUpdate($user) { if ('thinkphp' == $user->name) { return false; } } public function afterDelete($user) { Profile::destroy($user->id); } } ``` > 觀察者類的方法就是事件對應的方法名稱,方法的第一個參數就是模型對象實例,你依然可以通過依賴注入傳入其它的對象參數。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看