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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] >[danger]取消`resultset_type`配置參數 數據集查詢結果不再受`resultset_type`配置參數影響,默認情況下,Db查詢統一返回數組,模型查詢統一返回模型對象和模型數據集對象。如果Db查詢的時候也需要返回數據集的話,可以顯式調用`fetchCollection`方法。 模型查詢單條數據的方法返回model,空數據使用`if($result)、if(empty($result))等是不會有效果的`我們需要將返回的空Model用toArray轉換為空數組在進行上面的判斷 tp5時數據返回的類型在配置文件設置:'resultset_type'=>'array' 返回類型改為數據集:'resultset_type'=>'collection' tp6沒有統一規范返回數據的配置了(好像放在**database.php**配置文件還能用?) ## **最佳實踐** >[info] 模型查詢的最佳實踐原則是: > 在模型外部使用靜態方法進行查詢, > 內部使用[動態方法](#index)查詢,包括使用數據庫的查詢構造器 # **獲取單個數據** >[danger]`Model::find($idValue)` 返回的是模型對象實例或者null,如果不想返回null而是空模型對象則使用`Model::findOrEmpty($idValue)` > 模型查詢除了使用自身的查詢方法(save、saveAll、delete、create、update、destroy)外,一樣可以使用數據庫的查詢構造器 > 如果你是在模型內部獲取數據,請不要使用`$this->name`的方式來獲取數據,請使用`$this->getAttr('name')`替代。 ## **find($idValue)** 返回模型對象或者null ~~~ // 取出主鍵為1的數據,相當于select * from think_user where id=1; $user = User::find(1); echo $user->name; // 取出主鍵為1,3的數據,相當于select * from think_user where id in(1,3) limit 1; $user = User::find([1,3]);//既然是單條這里允許數組參數有什么用呢? echo $user->name; // 使用查詢構造器查詢滿足條件的數據 $user = User::where('name', 'thinkphp')->find(); echo $user->name; ~~~ ## **findOrEmpty($idValue)** 返回模型對象,無數據頁返回空模型對象 轉成數組需要toArray方法 ~~~ $user = User::where('name', 'thinkphp')->findOrEmpty(); //這種情況下,你可以用`isEmpty`方法來判斷當前是否為一個空模型。 if (!$user->isEmpty()) { echo $user->name; } ~~~ # **獲取多個數據select** ~~~ // 根據主鍵獲取多個數據 $list = User::select([1,2,3]); 查詢構造器:屬于BaseQuery類的數據庫查詢方法 // 使用查詢構造器查詢 $list = User::where('status', 1)->limit(3)->order('id', 'asc')->select(); foreach($list as $key=>$user){ echo $user->name; } ~~~ # **獲取某個字段或者某個列的值column** ~~~ // 獲取某個用戶的積分 User::where('id',10)->value('score'); // 獲取某個列的所有值 User::where('status',1)->column('name'); // 以id為索引 User::where('status',1)->column('name','id'); ~~~ >[danger] `value`和`column`方法返回的不再是一個模型對象實例,而是純粹的值或者某個列的數組。 # **<span id="index">動態查詢(getBy字段名)</span>** 支持數據庫的動態查詢方法,例如: ~~~ // 根據name字段查詢用戶 $user = User::getByName('thinkphp'); // 根據email字段查詢用戶 $user = User::getByEmail('thinkphp@qq.com'); ~~~ # **聚合查詢count** 同樣在模型中也可以調用數據庫的聚合方法查詢,例如: ~~~ User::count(); User::where('status','>',0)->count(); User::where('status',1)->avg('score'); User::max('score'); ~~~ 注意,如果你的字段不是數字類型,是使用`max`/`min`的時候,需要加上第二個參數。 ~~~ User::max('name', false); ~~~ # **數據分批處理** 模型也可以支持對返回的數據分批處理,這在處理大量數據的時候非常有用,例如: ~~~ User::chunk(100, function ($users) { foreach($users as $user){ // 處理user模型對象 } }); ~~~ # **自定義數據集對象** 模型的`select`方法返回的是一個包含多個模型實例的數據集對象(默認為`\think\model\Collection`),支持在模型中單獨設置查詢數據集的返回對象的名稱,例如: ~~~ <?php namespace app\index\model; use think\Model; class User extends Model { // 設置返回數據集的對象名 protected $resultSetType = '\app\common\Collection'; } ~~~ `resultSetType`屬性用于設置自定義的數據集使用的類名,該類應當繼承系統的`think\model\Collection`類。 >[danger]具體參閱數據集章節 # **使用游標查詢** 模型也可以使用數據庫的`cursor`方法進行游標查詢,返回生成器對象 ~~~ foreach(User::where('status', 1)->cursor() as $user){ echo $user->name; } ~~~ `user`變量是一個模型對象實例。 # **數組轉數據集collection** collection(array)將數組轉為數據集后可以使用很多方法如hidden等這樣方便臨時隱藏字段等操作 # **隱藏不需要的字段 與 顯示指定的字段** 返回的數據如果是對象的化還可以使用hidden和visible方法 或者 定義hidden和visible屬性(推薦) 因為hidden和visible方法不能作用與關聯模型的數據,而定義在相關模型中的hidden和visible屬性則可以 不過hidden和visible方法可以用于臨時隱藏,將返回的對象轉為數據集,然后調用hidden方法就可以了
                  <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>

                              哎呀哎呀视频在线观看