<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          YORMYii的第三方ORM插件

          聯(lián)合創(chuàng)作 · 2023-09-30 03:08

          YORM是一款Yii的第三方ORM插件,以實(shí)現(xiàn)一些高級(jí)特性,如:讀寫分離,分表,分庫,領(lǐng)域?qū)嶓w,緩存,全局唯一ID以及工作單元。

          YORM主要通過繼承了Yii的CActiveRecord類開發(fā)的CEntity類(實(shí)體類),以及一些實(shí)現(xiàn)高級(jí)特性的行為類,來使Yii程序支持復(fù)雜的系統(tǒng)架構(gòu)設(shè)計(jì)。

          YORM將數(shù)據(jù)庫的表散列規(guī)則寫到實(shí)體中,而不是配置過分復(fù)雜的規(guī)則,既方便又不失靈活性。

          Entity 實(shí)體類
          class User extends CEntity
          {
              // 實(shí)現(xiàn)讀寫分離(分庫)
              public function getDbConnection()
              {
                  if($this->isDbReading())
                  {
                      return Yii::app()->readDb;
                  }
                  else
                  {
                      return Yii::app()->writeDb;
                  }
              }

              // 實(shí)現(xiàn)分表, 根據(jù)Id進(jìn)行散列
              private $tableName = "tbl_user_1";
              public function updateMeta($id)
              {
                  $this->tableName = "tbl_user_".($id%10);
                     
                  $this->refreshMetaData();
                 
                  return $this;
              }

              public function tableName()
              {
                  return $this->tableName;
              }

              public function findByPk($pk)
              {
                  $this->updateMeta($pk);
                  return parent::findByPk($pk);
              }

              // 增加工作單元特性
              public function behaviors() {
                  return array('UnitOfWorkBehavior' => array('class' => 'UnitOfWorkBehavior'));
              }

          }

          使用:
          // 分表
          $user = User::model()->updateMeta(10)->findByPk(10);

          瀏覽 16
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美日韩成人 | 亚洲草逼视频 | 色色色色色色91 | 777婷婷天堂综合区色吧 | 国产一级无码黄片 |