<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 搜索器 搜索器的作用是用于封裝字段(或者搜索標識)的查詢條件表達式,一個搜索器對應一個特殊的方法(該方法必須是`public`類型),方法命名規范為: >[info] ### search`FieldName`Attr `FieldName`為數據表字段的駝峰轉換,搜索器僅在調用`withSearch`方法的時候觸發。 搜索器的場景包括: * 限制和規范表單的搜索條件; * 預定義查詢條件簡化查詢; 例如,我們需要給User模型定義`name`字段和時間字段的搜索器,可以使用: ~~~ <?php namespace app\model; use think\Model; class User extends Model { public function searchNameAttr($query, $value, $data) { $query->where('name','like', $value . '%'); } public function searchCreateTimeAttr($query, $value, $data) { $query->whereBetweenTime('create_time', $value[0], $value[1]); } } ~~~ 然后,我們可以使用下面的查詢 ~~~ User::withSearch(['name','create_time'], [ 'name' => 'think', 'create_time' => ['2018-8-1','2018-8-5'], 'status' => 1 ]) ->select(); ~~~ 最終生成的SQL語句類似于 ~~~ SELECT * FROM `think_user` WHERE `name` LIKE 'think%' AND `create_time` BETWEEN '2018-08-01 00:00:00' AND '2018-08-05 00:00:00' ~~~ 可以看到查詢條件中并沒有`status`字段的數據,因此可以很好的避免表單的非法查詢條件傳入,在這個示例中僅能使用`name`和`create_time`條件進行查詢。 > 事實上,除了在搜索器中使用查詢表達式外,還可以使用其它的任何查詢構造器以及鏈式操作。 例如,你需要通過表單定義的排序字段進行搜索結果的排序,可以使用 ~~~ <?php namespace app\model; use think\Model; class User extends Model { public function searchNameAttr($query, $value, $data) { $query->where('name','like', $value . '%'); if (isset($data['sort'])) { $query->order($data['sort']); } } public function searchCreateTimeAttr($query, $value, $data) { $query->whereBetweenTime('create_time', $value[0], $value[1]); } } ~~~ 然后,我們可以使用下面的查詢 ~~~ User::withSearch(['name','create_time', 'status'], [ 'name' => 'think', 'create_time' => ['2018-8-1','2018-8-5'], 'status' => 1, 'sort' => ['status'=>'desc'], ]) ->select(); ~~~ 最終查詢的SQL可能是 ~~~ SELECT * FROM `think_user` WHERE `name` LIKE 'think%' AND `create_time` BETWEEN '2018-08-01 00:00:00' AND '2018-08-05 00:00:00' ORDER BY `status` DESC ~~~ 你可以給搜索器定義字段別名,例如: ~~~ User::withSearch(['name'=>'nickname','create_time', 'status'], [ 'nickname' => 'think', 'create_time' => ['2018-8-1','2018-8-5'], 'status' => 1, 'sort' => ['status'=>'desc'], ]) ->select(); ~~~ >[danger] 搜索器通常會和查詢范圍進行比較,搜索器無論定義了多少,只需要一次調用,查詢范圍如果需要組合查詢的時候就需要多次調用。
                  <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>

                              哎呀哎呀视频在线观看