<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>

                要想寫出的代碼同時兼容5.1和6.0并不難,CMF已經在核心層做了很多兼容性的工作,最大問題是數據庫和模型相關的用法要做一些兼容性處理,其實就是寫代碼時只用兩個版本都能兼容的用法就可以了。 [TOC=2,6] ## **最簡單的兼容性處理** ### 根據CMF版本號做相應兼容性處理 通過`cmf_version()`函數獲取CMF版本號,并增加相應版本下的處理邏輯 ~~~ if (strpos(cmf_version(), '6.') === 0) { //這里寫6.0的處理邏輯 } else { //這里寫5.1的處理邏輯 } ~~~ ## **數據庫和模型** ### 不建議使用Db去操作數據庫 建議統一使用模型去操作數據庫 ### 模型統一設置模型名 模型里都指定這個模型的`$name`屬性,如`UserModel` ~~~ <?php namespace app\user\model; use think\Model; class UserModel extends Model { /** * 模型名稱,不帶前綴的表名,每個模型都要指定這個屬性 * @var string */ protected $name = 'user'; /*此處省略1000行...*/ } ~~~ ### 取消`setInc`/`setDec`方法 取消Query類的`setInc`/`setDec`方法,統一使用`inc`/`dec`方法替代。例如: ~~~ Db::name('user')->where('id', 1) ->inc('exp') ->dec('score') ->update(); ~~~ ### 取消`join`方法的批量操作 `join`方法不再支持批量操作多個表,如果你使用了`join`方法批量操作,需要改成每個表單獨調用一次`join`方法。 ### 取消`setField`方法 取消Query類的`setField`方法,請直接使用`data`方法或者`update`方法。 ### 取消`__TABLE_NAME__`支持 `table`方法取消`__TABLE_NAME__`支持,必須明確調用完整表名或者使用`name`方法。 ### 取消`whereOr`等方法傳入`Query`對象 因為`Query`對象查詢只能使用一次,除了`where`方法本身可以傳入`Query`對象外,其它的所有`where`查詢方法(例如`whereOr`/`whereExp`等)都不再支持傳入`Query`對象。 ### 取消`resultset_type`配置參數 數據集查詢結果不再受`resultset_type`配置參數影響,默認情況下,Db查詢統一返回數組,模型查詢統一返回模型對象和模型數據集對象。如果Db查詢的時候也需要返回數據集的話,可以顯式調用`fetchCollection`方法。 ### 取消`Query`類的`extend`方法 取消了`Query`類的`extend`方法,如果需要擴展查詢方法,建議自定義`Query`類并繼承系統的`think\db\Query`類即可,然后在模型中定義`query`屬性或者配置數據庫連接的`query`參數為你的自定義類。 ### `Expression`對象調整 原來的`Expression`對象已經更改為更適合的`Raw`對象,但不影響`Db::raw()`方法的調用。 ### 取消查詢`eq/neq/gt/lt/egt/elt`表達式 由于存在兩種用法,并且不夠直觀,全部統一為更直觀的用法。 下面的用法不再支持 ~~~ Db::name('user')->where('id', 'egt', 1) ->where('status', 'neq' ,1) ->select(); ~~~ 統一使用 ~~~ Db::name('user')->where('id', '>=', 1) ->where('status', '<>' ,1) ->select(); ~~~ ### 取消分表功能 出于分表的性能問題和復雜性,不再提供分表方法,建議使用數據庫的分區功能替代。新版可以使用`partition`方法指定當前查詢的分區。 ### 數據庫的查詢統計合并 數據庫的查詢次數合并到`queryTimes`,不再區分讀寫操作,你可以使用下面的方法獲取當前請求的數據庫查詢次數(包括讀寫) ~~~ Db::getQueryTimes(); ~~~ ### 取消了模型的`get`/`all`方法 無論使用`Db`類還是模型類查詢,全部統一使用`find`/`select`方法,取消了之前模型類額外提供的`get`/`all`方法。同時取消的方法還包括`getOrFail`/`allOrFail`。 ### 取消全局查詢范圍`base`方法 取消模型類的全局查詢范圍`base`方法,改由使用`globalScope`屬性定義(數組)需要全局查詢的查詢范圍方法。 ### 模型`save`方法調整 模型類的`save`方法不再支持`where`參數。 ### 關聯統計調整 如果你的關聯統計使用了閉包方式返回關聯統計字段,需要調整為如下方式: ``` User::withCount(['cards' => function($query,&$name) { $query->where('status', 1); $name = 'card_count'; }])->select(); ``` ### 模型和數據集的輸出調整 取消`hidden`/`visible`/`append`方法的第二個參數,當你調用這幾個方法的時候,無論模型是否設置了相關屬性,都會直接覆蓋之前設置的值。 ### 查詢緩存調整 如果希望在更新和刪除之后自動清除之前的查詢緩存,必須在`cache`方法中傳入key值而不是`true`。 ### 刪除關聯類`selfRelation`方法 如果你在定義關聯的時候使用了`selfRelation`方法,請直接刪除該方法,目前已經不再需要,會自動識別是否為自關聯。 ### 刪除關聯類的`setEagerlyType`方法 一對一關聯無需在定義關聯的時候指定為`JOIN`查詢,在查詢的時候直接使用`withJoin`方法即可使用`JOIN`方式進行關聯查詢。
                  <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>

                              哎呀哎呀视频在线观看