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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 常用的鏈式方法 * field()用來選擇需要獲取的字段 > 用法: > 第一種:filed('id,name') > 第二種:field(['id'=>'編號','name'=>'姓名']),這種方式可以給字段起別名 * where()用來選擇條件 >~~~ > 用法: > 第一種:where('id','=',1),如果是相等關系可以省略=,我個人覺得沒必要省略,保持統一 > 第二種:where([['id','=',1],['grade','>=',80]]) > 第三種:where('info->email','thinkphp@qq.com'),查詢JSON類型字段(info字段為json類型) > 第四種:where('type=1 AND status=1'),使用字符串,與第一種的區別在于不會對查詢字段進行避免關鍵字沖突處理,建議配合預處理機制where("id=:id and username=:name", ['id' => [1, \PDO::PARAM_INT] , 'name' => 'thinkphp'])或者使用: > Db::table('think_user') > ->where("id=:id and username=:name") > ->bind(['id' => [1, \PDO::PARAM_INT] , 'name' => 'thinkphp']) > ->select(); > 也可以使用更加安全的方式: >Db::table('think_user') >whereRaw("id=:id and username=:name", ['id' => [1, \PDO::PARAM_INT] , 'name' => 'thinkphp']) >select(); > ~~~ * find()用來查詢數據 > 沒有查詢到數據返回null,查詢到數據返回數據庫中的第一條記錄,以數組的形式返回 > 用法: > 第一種:find() > 第二種:find(1),這種方式可以用來在主鍵查詢,省略where()主鍵條件 * findOrFail() > 此方法沒有找到數據會拋出異常 * findOrEmpty() > 當查詢不存在的時候返回空數組而不是Null * select()用來查詢多條數據 > 沒有查詢到數據返回一個空數組,查詢到數據返回一個非空數組 > 用法: > select() * value()用來獲取單個字段的值 > 沒有查詢到數據返回null,如果查詢到的話返回一個字符串 > 用法: > Db::table('test')->where('id','=',1)->value('name') * column()用來獲取某一列的值 > 用法: > 第一種:column('name'),column('name','id') > 第二種:column('*','id'),返回完整數據,并且添加一個索引值,指定id字段的值作為索引 * selectOrFail() > 此方法沒有找到數據會拋出異常 * insert() > 新增單條,新增成功返回新增的條數,失敗返回false > 用法: > 第一種:insert($data),$data為一個數組 > 第二種:insert($data,true),第二種用法使用replace into插入,并且這種方式只能使用在mysql數據庫上 > insert into 和 replace into的差別: > replace into 首先嘗試插入數據到表中 > 1.如果發現表中已經有此行數據(根據主鍵或者唯一索引判斷)則先刪除此行數據,然后插入新的數據。 > 2.否則,直接插入新數據。 > 要注意的是:插入數據的表必須有主鍵或者是唯一索引!否則的話,replace into 會直接插入數據,這將導致表中出現重復的數據。 * data() > 這種用法的好處是可以進行一些基本的過濾,不過需要注意的是用了data()方法之后,insert()方法中就不能支持true > 用法: > data($data),$data是一個數組 * insertGetId() > 插入的同時返回新增的id > 一共執行了兩步:第一步是插入,第二步是返回主鍵id > insertGetId($data),$data是數組 * insertGetId() > 插入的同時返回新增的id > 一共執行了兩步:第一步是插入,第二步是返回主鍵id > insertGetId($data),$data是數組 * insertAll() > 新增多條,新增成功返回新增的條數,失敗返回false > insertAll(),insertAll($data,true) * update() > 必須要更新條件,如果更新條件是主鍵的話,可以直接把主鍵寫到更新數組中 > 同時注意,更新操作前面不能使用data()方法,更新成功返回更新的條數,沒修改任何數據返回0 > 用法: > Db::table('test')->where('id','=',1)->update($data) > Db::table('test')->update(['id'=>2,'name'=>'就是這么強']),tp5.1會自動把id作為更新的條件 * delete() > 刪除成功返回刪除數量,否則返回0 > 用法: > delete(1),delete([1,2,3]),如果是根據主鍵刪除的話可以在delete()方法中直接傳入一個主鍵id,就可以成功刪除了 > delete(true),不帶條件調用delete()方法會提示錯誤,通過true可以無條件刪除所有的數據 * query() > 用來執行原生sql語句 > 用法: > delete($sql),$sql為原生的sql語句 * table() > 用來指定數據庫表 > 用法: > 第一種:可以指定數據庫table("數據庫名.完整的數據表名") > 第二種:可以指定多張表table("表名 別名,表名 別名") > 第三種:使用數組可以盡量避免與mysql的關鍵字沖突,table(['think_user'=>'user','think_role'=>'role']) * name() > 數據表設置了表前綴的話,可以使用name(表名)來指定表名,此時的表名不需要加上表前綴,如果沒有指定表前綴的話,name()方法和table()方法是一樣的使用方法 * chunk() > 該方法用來處理成千上百條數據庫記錄,該方法一次獲取結果集的一小塊,然后填充到每一小塊數據要處理的閉包,該方法在編寫處理大量數據庫記錄的時候非常有用。 > 比如,我們可以全部用戶表數據進行分批處理,每次處理 100 個用戶記錄: > ~~~ > Db::table('think_user')->chunk(100, function($users) { > foreach ($users as $user) { > // > } > }); > // 或者交給回調方法myUserIterator處理 > Db::table('think_user')->chunk(100, 'myUserIterator'); > > ~~~ > 你可以通過從閉包函數中返回`false`來中止對后續數據集的處理: > ~~~ > Db::table('think_user')->chunk(100, function($users) { > foreach ($users as $user) { > // 處理結果集... > if($user->status==0){ > return false; > } > } > }); > > ~~~ > > 也支持在`chunk`方法之前調用其它的查詢方法,例如: > > ~~~ > Db::table('think_user') > ->where('score','>',80) > ->chunk(100, function($users) { > foreach ($users as $user) { > // > } > }); > > ~~~ > > `chunk`方法的處理默認是根據主鍵查詢,支持指定字段,例如: > > ~~~ > Db::table('think_user')->chunk(100, function($users) { > // 處理結果集... > return false; > },'create_time'); > > ~~~ > > 并且支持指定處理數據的順序。 > > ~~~ > Db::table('think_user')->chunk(100, function($users) { > // 處理結果集... > return false; > },'create_time', 'desc'); > ~~~ * cursor() >~~~ > 如果需要處理大量的數據,可以使用新版提供的游標查詢功能,該查詢方式利用了PHP的生成器特性,可以減少大量數據查詢的內存占用問題 > > $cursor = Db::table('user')->where('status', 1)->cursor(); > foreach($cursor as $user){ > echo $user['name']; > } > `cursor`方法返回的是一個生成器對象,`user`變量是數據表的一條數據(數組)。 > ~~~ * strict(false) > 通過這個方法在insert()添加數據的時候,可以過濾掉那些并不是數據庫中相關字段的數據,也就是數據庫中沒有name這個字段,但是你添加數據的時候,添上了name這個字段的值,我就可以通過這個方法過濾掉這個字段 * limit() > 在使用insert()插入數據的時候,可以使用limit()方法指定每次插入的數量限制,實現分批寫入 * raw() > ~~~ > 適合在數組更新的時候,raw()方法可以執行表達式或者是sql函數 > Db::name('user') > ->where('id', 1) > ->update([ > 'name' => Db::raw('UPPER(name)'), > 'score' => Db::raw('score-3'), > 'read_time' => Db::raw('read_time+1') > ]); > ~~~ * setField() >~~~ >用于更新某個字段值 > Db::name('user') > ->where('id',1) > ->setField('name', 'thinkphp'); > ~~~ * setInc()/setDec() ~~~ // score 字段加 1 Db::table('think_user') ->where('id', 1) ->setInc('score'); // score 字段加 5 Db::table('think_user') ->where('id', 1) ->setInc('score', 5); // score 字段減 1 Db::table('think_user') ->where('id', 1) ->setDec('score'); // score 字段減 5 Db::table('think_user') ->where('id', 1) ->setDec('score', 5); 最終生成的SQL語句可能是: UPDATE `think_user` SET `score` = `score` + 1 WHERE `id` = 1 UPDATE `think_user` SET `score` = `score` + 5 WHERE `id` = 1 UPDATE `think_user` SET `score` = `score` - 1 WHERE `id` = 1 UPDATE `think_user` SET `score` = `score` - 5 WHERE `id` = 1 setInc/setDec支持延時更新,如果需要延時更新則傳入第三個參數,下例中延時10秒更新。 Db::name('user')->where('id', 1)->setInc('score', 1, 10); setInc/setDec 方法返回影響數據的條數,如果使用了延遲更新的話,可能會返回true ~~~ * useSoftDelete()軟刪除 ~~~ // 軟刪除數據 使用delete_time字段標記刪除 Db::name('user') ->where('id', 1) ->useSoftDelete('delete_time',time()) ->delete(); 實際生成的SQL語句可能如下(執行的是`UPDATE`操作): UPDATE `think_user` SET `delete_time` = '1515745214' WHERE `id` = `useSoftDelete`方法表示使用軟刪除,并且指定軟刪除字段為`delete_time`,寫入數據為當前的時間戳。 ~~~ * alias() > 用來設置當前數據表的別名 > 用法: > 第一種:Db::table('think_user')->alias('a') > 第二種:Db::table('think_user')->alias(['think_dept'=>'dept','think_user'=>'user'])->join('think_dept','dept.user_id=user.id)
                  <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>

                              哎呀哎呀视频在线观看