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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                模型查詢和數據庫查詢方法的區別主要在于,模型中的查詢的數據在獲取的時候會經過獲取器的處理,以及更加對象化的獲取方式。 >[danger] 模型查詢除了使用自身的查詢方法外,一樣可以使用數據庫的查詢構造器,返回的都是模型對象實例。但如果直接調用查詢對象的方法,IDE可能無法完成自動提示。 ## 獲取單個數據 獲取單個數據的方法包括: ~~~ // 取出主鍵為1的數據 $user = User::find(1); echo $user->name; // 使用查詢構造器查詢滿足條件的數據 $user = User::where('name', 'thinkphp')->find(); echo $user->name; ~~~ 模型使用`find`方法查詢,如果數據不存在返回`Null`,否則返回當前模型的對象實例。如果希望查詢數據不存在則返回一個空模型,可以使用。 ``` $user = User::findOrEmpty(1); ``` 你可以用`isEmpty`方法來判斷當前是否為一個空模型。 ``` $user = User::where('name', 'thinkphp')->findOrEmpty(); if (!$user->isEmpty()) { echo $user->name; } ``` >[danger] 如果你是在模型內部獲取數據,請不要使用`$this->name`的方式來獲取數據,請使用`$this->getAttr('name')` 替代。 ## 獲取多個數據 取出多個數據: ~~~ // 根據主鍵獲取多個數據 $list = User::select([1,2,3]); // 對數據集進行遍歷操作 foreach($list as $key=>$user){ echo $user->name; } ~~~ 要更多的查詢支持,一樣可以使用查詢構造器: ~~~ // 使用查詢構造器查詢 $list = User::where('status', 1)->limit(3)->order('id', 'asc')->select(); foreach($list as $key=>$user){ echo $user->name; } ~~~ >查詢構造器方式的查詢可以支持更多的連貫操作,包括排序、數量限制等。 ### 自定義數據集對象 模型的`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`類。 ## 使用查詢構造器 在模型中仍然可以調用數據庫的鏈式操作和查詢方法,可以充分利用數據庫的查詢構造器的優勢。 例如: ~~~php User::where('id',10)->find(); User::where('status',1)->order('id desc')->select(); User::where('status',1)->limit(10)->select(); ~~~ 使用查詢構造器直接使用靜態方法調用即可,無需先實例化模型。 ### 獲取某個字段或者某個列的值 ~~~php // 獲取某個用戶的積分 User::where('id',10)->value('score'); // 獲取某個列的所有值 User::where('status',1)->column('name'); // 以id為索引 User::where('status',1)->column('name','id'); ~~~ >[danger] `value`和`column`方法返回的不再是一個模型對象實例,而是純粹的值或者某個列的數組。 ### 動態查詢 支持數據庫的動態查詢方法,例如: ~~~ // 根據name字段查詢用戶 $user = User::getByName('thinkphp'); // 根據email字段查詢用戶 $user = User::getByEmail('thinkphp@qq.com'); ~~~ ### 聚合查詢 同樣在模型中也可以調用數據庫的聚合方法查詢,例如: ~~~ 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模型對象 } }); ~~~ ## 使用游標查詢 模型也可以使用數據庫的`cursor`方法進行游標查詢,返回生成器對象 ~~~ foreach(User::where('status', 1)->cursor() as $user){ echo $user->name; } ~~~ `user`變量是一個模型對象實例。 ## 最佳實踐 >[info] 模型查詢的最佳實踐原則是:在模型外部使用靜態方法進行查詢,內部使用動態方法查詢,包括使用數據庫的查詢構造器。
                  <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>

                              哎呀哎呀视频在线观看