您好,登錄后才能下訂單哦!
今天小編給大家分享一下thinkphp6常用功能有哪些的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
阿里鏡像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
Laravel China鏡像: composer config -g repo.packagist composer https://packagist.laravel-china.org
中國(guó)全量鏡像:composer config -g repo.packagist composer https://packagist.phpcomposer.com9
在碼云或者git下載案例發(fā)現(xiàn)沒(méi)有vendor無(wú)法運(yùn)行
composer install --ignore-platform-reqs
或者
composer update --ignore-platform-reqs
1、下載tp6
composer create-project topthink/think tp
2、設(shè)置多應(yīng)用模式
tp6默認(rèn)是單應(yīng)用訪問(wèn)默認(rèn)進(jìn)入app/controller里的方法,如果需要做多應(yīng)用開發(fā)(例:http://***.com/admin、http://***.com/index)需要開啟多應(yīng)用模式
composer requiretopthink/think-multi-app
php think build 應(yīng)用名稱(例:index或者admin)
3、模板渲染
tp3: $this->display();tp5: return $this->fetch();tp6: return View::fetch('index');
tp6默認(rèn)缺少很多依賴包的,需要下載
composer require topthink/think-view
控制器引入
use think\facade\View;
4、模板跳轉(zhuǎn)重定向
composer require liliuwei/thinkphp-jump
控制器引入
頭部引入:use \liliuwei\think\Jump;
類內(nèi)引入:use Jump;
如果報(bào)錯(cuò):
查看app/config/jump.php是否有設(shè)置:
'dispatch_success_tmpl' => app()->getRootPath().'/vendor/qeq66/think-jump/template/jump.html','dispatch_error_tmpl' => app()->getRootPath().'/vendor/qeq66/think-jump/template/jump.html'
5、獲取表單數(shù)據(jù)
控制器引入
use think\facade\Request;$code = Request::param('code');
或者
$code = input("code");
6、數(shù)字驗(yàn)證碼
composer require topthink/think-captcha
在應(yīng)用app目錄下找到全局中間件middleware.php文件,把下面注釋的代碼\think\middleware\SessionInit::class開啟
7、上傳圖片處理圖片
composer require topthink/think-image
8、mysql select查詢
從tp5過(guò)渡過(guò)來(lái)的,默認(rèn)select查詢是返回二維數(shù)組,tp6返回?cái)?shù)據(jù)集,雖然官方說(shuō)和數(shù)組操作基本無(wú)區(qū)別
但是有些時(shí)候還是數(shù)組好用 例如arr[k][0] = "test"這種間接修改,在默認(rèn)返回的數(shù)據(jù)集中,是報(bào)錯(cuò)的,但是數(shù)組是可以這樣操作的
1、
db::name('ceshi')->select()->toArray();
2、
修改tp6目錄下的/vendor/topthink/think-orm/src/db的BaseQuery.php
修改示例如圖所示,將圖中畫紅框的位置刪除,并且在
$resultSet = $this->connection->select($this);
下面增加一行
return $resultSet;
9、分頁(yè)
$list = db::name('admin_menu')->where($where)->paginate(['list_rows'=> 10,'query' => request()->param(),]);
使用paginate方法獲取分頁(yè)數(shù)據(jù),查詢集合無(wú)法新增的下標(biāo)值
查詢條件需要增加 ‘query’ => request()->param(),
解決寫法:
php端:
// An highlighted block$list = db::name('admin_menu')->where($where)->paginate(['list_rows'=> 10,'query' => request()->param(),]);$new_arr = array();foreach($list as $k=>$v){$v[$k]['erji_menu'] = “案例”;$new_arr[] = $v;} // 獲取分頁(yè)顯示$page = $list->render();// 模板變量賦值View::assign('list', $new_arr);View::assign('page', $page);
html端
{$page|raw}
分頁(yè)引用class修改
tp6\vendor\topthink\think-orm\src\paginator\driver\Bootstrap.php
10、新增數(shù)據(jù)差異
對(duì)比tp5 save方法用于更新 add方法用于添加
tp6 save既是更新也是添加 add方法被刪除
db::name('ceshi')->where(array('tz_id'=>$post['tz_id']))->save($users);db::name('ceshi')->save($users);
加主鍵where是更新不加主鍵是添加,但是會(huì)出現(xiàn)問(wèn)題執(zhí)行成功只會(huì)返回 0,1
不會(huì)像tp5 add方法返回添加數(shù)據(jù)的主鍵id
/** * 插入記錄 * @access public * @param array $data 數(shù)據(jù) * @param boolean $getLastInsID 返回自增主鍵 * @return integer|string */public function insert(array $data = [], bool $getLastInsID = false){ if (!empty($data)) { $this->options['data'] = $data; } return $this->connection->insert($this, $getLastInsID);}
add方法改成了insert方法,雖然注釋上面寫著返回自增主鍵,但是我這邊測(cè)試還是沒(méi)有拿到自增主鍵,不清楚是版本問(wèn)題還是什么這里不深究如果你沒(méi)遇到就當(dāng)我沒(méi)說(shuō)
/** * 插入記錄并獲取自增ID * @access public * @param array $data 數(shù)據(jù) * @return integer|string */public function insertGetId(array $data){ return $this->insert($data, true);}
然后拿不到只能繼續(xù)找發(fā)現(xiàn)有一個(gè)insertGetId可以拿到。也就是說(shuō)為了快速開發(fā),平時(shí)還是用save解決,遇到要拿自增主鍵就換成insertGetId
11、tp6 高級(jí)查詢and和or同時(shí)使用
tp6針對(duì)and查詢和or查詢有快捷方法
但是這些快捷方法會(huì)有很多局限性,當(dāng)我們對(duì)數(shù)據(jù)進(jìn)行一系列的復(fù)雜查詢時(shí)這些快捷方法就會(huì)出現(xiàn)很多問(wèn)題例如:
$where1[] = ["order_khname","like",'%'.$keywords.'%'];$where2[] = ["order_khqq","like",'%'.$keywords.'%'];$where3[] = ["order_khmobile","like",'%'.$keywords.'%'];$where[] = ["order_type","=",$ddzt];$list = db::name('ceshi') ->where($where) ->whereOr([$where1,$where2,$where3]) ->paginate([ 'list_rows'=> 10, 'query' => request()->param(), ]);
這里我們想要的sql格式為:
SELECT * FROM `dc_ceshi` WHERE `order_type` = 0 and ( ( `order_khname` LIKE '%1%' ) OR ( `order_khqq` LIKE '%1%' ) OR ( `order_khmobile` LIKE '%1%' )) LIMIT 0,10
實(shí)際生成的格式為:
SELECT * FROM `dc_ceshi` WHERE `order_type` = 0 OR ( `order_khname` LIKE '%1%' ) OR ( `order_khqq` LIKE '%1%' ) OR ( `order_khmobile` LIKE '%1%' ) LIMIT 0,10
這里就可以用到閉包查詢(注:這只是我學(xué)習(xí)tp6的時(shí)候遇到的問(wèn)題然后在tp6文檔里面找到的解決方式,直接用原生sql也是可以解決,把where條件直接改成一個(gè)自定義的字符串也可以解決,用tp5的連接方式也應(yīng)該可以但是我沒(méi)試)
$list = db::name('ceshi') ->where(function ($query) use ($keywords){ $query->where("order_khname","like",'%'.$keywords.'%') ->whereOr("order_khqq","like",'%'.$keywords.'%') ->whereOr("order_khmobile","like",'%'.$keywords.'%'); }) ->where($where) ->paginate([ 'list_rows'=> 10, 'query' => request()->param(),]);
這時(shí)候得到sql格式為:
SELECT * FROM `dc_ceshi` WHERE ( `order_khname` LIKE '%1%' OR `order_khqq` LIKE '%1%' OR `order_khmobile` LIKE '%1%' ) AND `order_type` = 0 LIMIT 0,10
已經(jīng)滿足了我的需求,但是還是有一個(gè)問(wèn)題就是如果keywords這個(gè)變量沒(méi)有值的時(shí)候他查詢的語(yǔ)句格式為:
SELECT * FROM `dc_ceshi` WHERE ( `order_khname` LIKE '%%' OR `order_khqq` LIKE '%%' OR `order_khmobile` LIKE '%%' ) AND `order_type` = 0 LIMIT 0,10
這種情況只需要在加個(gè)if判斷:
$list = db::name('ceshi') ->where(function ($query) use ($keywords){ if($keywords){ $query->where("order_khname","like",'%'.$keywords.'%') ->whereOr("order_khqq","like",'%'.$keywords.'%') ->whereOr("order_khmobile","like",'%'.$keywords.'%'); } }) ->where($where) ->paginate([ 'list_rows'=> 10, 'query' => request()->param(),]);
12、tp6 find查詢變動(dòng)
tp5、tp3我們查詢一個(gè)表是否存在數(shù)據(jù)可以直接查詢一條
$datafind = db::name('ceshi')->find();
tp6 find查詢必須增加where條件或者order排序
$datafind = db::name('ceshi')->order('ID DESC')->find();
以上就是“thinkphp6常用功能有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。