ThinkPHP3.1查詢(xún)語(yǔ)言詳解
ThinkPHP的查詢(xún)語(yǔ)言配合連貫操作可以很好解決復(fù)雜的業(yè)務(wù)邏輯需求,本篇我們就首先來(lái)深入了解下框架的查詢(xún)語(yǔ)言。
1.查詢(xún)語(yǔ)言介紹
ThinkPHP內(nèi)置了非常靈活的查詢(xún)方法,可以快速的進(jìn)行數(shù)據(jù)查詢(xún)操作,查詢(xún)條件可以用于讀取、更新和刪除等操作,主要涉及到where方法等連貫操作即可,無(wú)論是采用什么數(shù)據(jù)庫(kù),你幾乎采用一樣的查詢(xún)方法(個(gè)別數(shù)據(jù)庫(kù)例如Mongo在表達(dá)式查詢(xún)方面會(huì)有所差異),系統(tǒng)幫你解決了不同數(shù)據(jù)庫(kù)的差異性,因此我們把框架的這一查詢(xún)方式稱(chēng)之為查詢(xún)語(yǔ)言。查詢(xún)語(yǔ)言也是ThinkPHP框架的ORM亮點(diǎn),讓查詢(xún)操作更加簡(jiǎn)單易懂。下面來(lái)一一講解查詢(xún)語(yǔ)言的內(nèi)涵。
2.查詢(xún)方式
ThinkPHP可以支持直接使用字符串作為查詢(xún)條件,但是大多數(shù)情況推薦使用索引數(shù)組或者對(duì)象來(lái)作為查詢(xún)條件,因?yàn)闀?huì)更加安全。
一、使用字符串作為查詢(xún)條件
這是最傳統(tǒng)的方式,但是安全性不高,例如:
$User = M("User"); // 實(shí)例化User對(duì)象 $User->where('type=1 AND status=1')->select();
最后生成的SQL語(yǔ)句是
SELECT * FROM think_user WHERE type=1 AND status=1
采用字符串查詢(xún)的時(shí)候,我們可以配合使用新版提供的字符串條件的安全預(yù)處理機(jī)制,暫且不再細(xì)說(shuō)。
二、使用數(shù)組作為查詢(xún)條件
這種方式是最常用的查詢(xún)方式,例如:
$User = M("User"); // 實(shí)例化User對(duì)象 $condition['name'] = 'thinkphp'; $condition['status'] = 1; // 把查詢(xún)條件傳入查詢(xún)方法 $User->where($condition)->select();
最后生成的SQL語(yǔ)句是
SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1
如果進(jìn)行多字段查詢(xún),那么字段之間的默認(rèn)邏輯關(guān)系是 邏輯與 AND,但是用下面的規(guī)則可以更改默認(rèn)的邏輯判斷,通過(guò)使用 _logic 定義查詢(xún)邏輯:
$User = M("User"); // 實(shí)例化User對(duì)象 $condition['name'] = 'thinkphp'; $condition['account'] = 'thinkphp'; $condition['_logic'] = 'OR'; // 把查詢(xún)條件傳入查詢(xún)方法 $User->where($condition)->select();
最后生成的SQL語(yǔ)句是
SELECT * FROM think_user WHERE `name`='thinkphp' OR `account`='thinkphp'
三、使用對(duì)象方式來(lái)查詢(xún)
這里以stdClass內(nèi)置對(duì)象為例:
$User = M("User"); // 實(shí)例化User對(duì)象 // 定義查詢(xún)條件 $condition = new stdClass(); $condition->name = 'thinkphp'; $condition->status= 1; $User->where($condition)->select();
最后生成的SQL語(yǔ)句和上面一樣
SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1
使用對(duì)象方式查詢(xún)和使用數(shù)組查詢(xún)的效果是相同的,并且是可以互換的,大多數(shù)情況下,我們建議采用數(shù)組方式更加高效。
3.表達(dá)式查詢(xún)
上面的查詢(xún)條件僅僅是一個(gè)簡(jiǎn)單的相等判斷,可以使用查詢(xún)表達(dá)式支持更多的SQL查詢(xún)語(yǔ)法,也是ThinkPHP查詢(xún)語(yǔ)言的精髓,查詢(xún)表達(dá)式的使用格式:
$map['字段名'] = array('表達(dá)式','查詢(xún)條件');
表達(dá)式不分大小寫(xiě),支持的查詢(xún)表達(dá)式有下面幾種,分別表示的含義是:
表達(dá)式 | 含義 |
---|---|
EQ | 等于(=) |
NEQ | 不等于(<>) |
GT | 大于(>) |
EGT | 大于等于(>=) |
LT | 小于(<) |
ELT | 小于等于(<=) |
LIKE | 模糊查詢(xún) |
[NOT] BETWEEN | (不在)區(qū)間查詢(xún) |
[NOT] IN | (不在)IN 查詢(xún) |
EXP | 表達(dá)式查詢(xún),支持SQL語(yǔ)法 |
示例如下:
EQ :等于(=)
例如:
$map['id'] = array('eq',100);
和下面的查詢(xún)等效
$map['id'] = 100;
表示的查詢(xún)條件就是 id = 100
NEQ: 不等于(<>)
例如:
$map['id'] = array('neq',100);
表示的查詢(xún)條件就是 id <> 100
GT:大于(>)
例如:
$map['id'] = array('gt',100);
表示的查詢(xún)條件就是 id > 100
EGT:大于等于(>=)
例如:
$map['id'] = array('egt',100);
表示的查詢(xún)條件就是 id >= 100
LT:小于(<)
例如:
$map['id'] = array('lt',100);
表示的查詢(xún)條件就是 id < 100
ELT: 小于等于(<=)
例如:
$map['id'] = array('elt',100);
表示的查詢(xún)條件就是 id <= 100
[NOT] LIKE: 同sql的LIKE
例如:
$map['name'] = array('like','thinkphp%');
查詢(xún)條件就變成 name like 'thinkphp%'
如果配置了DB_LIKE_FIELDS參數(shù)的話(huà),某些字段也會(huì)自動(dòng)進(jìn)行模糊查詢(xún)。例如設(shè)置了:
'DB_LIKE_FIELDS'=>'title|content'
的話(huà),使用
$map['title'] = 'thinkphp';
查詢(xún)條件就會(huì)變成 title like '%thinkphp%'
支持?jǐn)?shù)組方式,例如
$map['a'] =array('like',array('%thinkphp%','%tp'),'OR'); $map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND');
生成的查詢(xún)條件就是:
(a like '%thinkphp%' OR a like '%tp') AND (b not like '%thinkphp%' AND b not like '%tp')
[NOT] BETWEEN :同sql的[not] between, 查詢(xún)條件支持字符串或者數(shù)組,例如:
$map['id'] = array('between','1,8');
和下面的等效:
$map['id'] = array('between',array('1','8'));
查詢(xún)條件就變成 id BETWEEN 1 AND 8
[NOT] IN: 同sql的[not] in ,查詢(xún)條件支持字符串或者數(shù)組,例如:
$map['id'] = array('not in','1,5,8');
和下面的等效:
$map['id'] = array('not in',array('1','5','8'));
查詢(xún)條件就變成 id NOT IN (1,5, 8)
EXP:表達(dá)式,支持更復(fù)雜的查詢(xún)情況
例如:
$map['id'] = array('in','1,3,8');
可以改成:
$map['id'] = array('exp',' IN (1,3,8) ');
exp查詢(xún)的條件不會(huì)被當(dāng)成字符串,所以后面的查詢(xún)條件可以使用任何SQL支持的語(yǔ)法,包括使用函數(shù)和字段名稱(chēng)。查詢(xún)表達(dá)式不僅可用于查詢(xún)條件,也可以用于數(shù)據(jù)更新,例如:
$User = M("User"); // 實(shí)例化User對(duì)象 // 要修改的數(shù)據(jù)對(duì)象屬性賦值 $data['name'] = 'ThinkPHP'; $data['score'] = array('exp','score+1');// 用戶(hù)的積分加1 $User->where('id=5')->save($data); // 根據(jù)條件保存修改的數(shù)據(jù)
4.快捷查詢(xún)
從3.0版本開(kāi)始,增加了快捷查詢(xún)方式,可以進(jìn)一步簡(jiǎn)化查詢(xún)條件的寫(xiě)法,例如:
一、實(shí)現(xiàn)不同字段相同的查詢(xún)條件
$User = M("User"); // 實(shí)例化User對(duì)象 $map['name|title'] = 'thinkphp'; // 把查詢(xún)條件傳入查詢(xún)方法 $User->where($map)->select();
查詢(xún)條件就變成
name= 'thinkphp' OR title = 'thinkphp'
二、實(shí)現(xiàn)不同字段不同的查詢(xún)條件
$User = M("User"); // 實(shí)例化User對(duì)象 $map['status&title'] =array('1','thinkphp','_multi'=>true); // 把查詢(xún)條件傳入查詢(xún)方法 $User->where($map)->select();
'_multi'=>true必須加在數(shù)組的最后,表示當(dāng)前是多條件匹配,這樣查詢(xún)條件就變成
status= 1 AND title = 'thinkphp'
查詢(xún)字段支持更多的,例如:
$map['status&score&title'] =array('1',array('gt','0'),'thinkphp','_multi'=>true);
查詢(xún)條件就變成
status= 1 AND score >0 AND title = 'thinkphp'
注意:快捷查詢(xún)方式中“|”和“&”不能同時(shí)使用。
5.區(qū)間查詢(xún)
ThinkPHP支持對(duì)某個(gè)字段的區(qū)間查詢(xún),例如:
$map['id'] = array(array('gt',1),array('lt',10)) ;
得到的查詢(xún)條件是:
(`id` > 1) AND (`id` < 10)
$map['id'] = array(array('gt',3),array('lt',10), 'or') ;
得到的查詢(xún)條件是:
(`id` > 3) OR (`id` < 10)
$map['id'] = array(array('neq',6),array('gt',3),'and');
得到的查詢(xún)條件是:(`id` != 6) AND (`id` > 3)
最后一個(gè)可以是AND、 OR或者 XOR運(yùn)算符,如果不寫(xiě),默認(rèn)是AND運(yùn)算。
區(qū)間查詢(xún)的條件可以支持普通查詢(xún)的所有表達(dá)式,也就是說(shuō)類(lèi)似LIKE、GT和EXP這樣的表達(dá)式都可以支持。另外區(qū)間查詢(xún)還可以支持更多的條件,只要是針對(duì)一個(gè)字段的條件都可以寫(xiě)到一起,例如:
$map['name'] = array(array('like','%a%'), array('like','%b%'), array('like','%c%'), 'ThinkPHP','or');
最后的查詢(xún)條件是:
(`name` LIKE '%a%') OR (`name` LIKE '%b%') OR (`name` LIKE '%c%') OR (`name` = 'ThinkPHP')
6.組合查詢(xún)
組合查詢(xún)的主體還是采用數(shù)組方式查詢(xún),只是加入了一些特殊的查詢(xún)支持,包括字符串模式查詢(xún)(_string)、復(fù)合查詢(xún)(_complex)、請(qǐng)求字符串查詢(xún)(_query),混合查詢(xún)中的特殊查詢(xún)每次查詢(xún)只能定義一個(gè),由于采用數(shù)組的索引方式,索引相同的特殊查詢(xún)會(huì)被覆蓋。
一、字符串模式查詢(xún)(采用_string 作為查詢(xún)條件)
數(shù)組條件還可以和字符串條件混合使用,例如:
$User = M("User"); // 實(shí)例化User對(duì)象 $map['id'] = array('neq',1); $map['name'] = 'ok'; $map['_string'] = 'status=1 AND score>10'; $User->where($map)->select();
最后得到的查詢(xún)條件就成了:
( `id` != 1 ) AND ( `name` = 'ok' ) AND ( status=1 AND score>10 )
二、請(qǐng)求字符串查詢(xún)方式
請(qǐng)求字符串查詢(xún)是一種類(lèi)似于URL傳參的方式,可以支持簡(jiǎn)單的條件相等判斷。
$map['id'] = array('gt','100'); $map['_query'] = 'status=1&score=100&_logic=or';
得到的查詢(xún)條件是:
`id`>100 AND (`status` = '1' OR `score` = '100')
三、復(fù)合查詢(xún)
復(fù)合查詢(xún)相當(dāng)于封裝了一個(gè)新的查詢(xún)條件,然后并入原來(lái)的查詢(xún)條件之中,所以可以完成比較復(fù)雜的查詢(xún)條件組裝。
例如:
$where['name'] = array('like', '%thinkphp%'); $where['title'] = array('like','%thinkphp%'); $where['_logic'] = 'or'; $map['_complex'] = $where; $map['id'] = array('gt',1);
查詢(xún)條件是
( id > 1) AND ( ( name like '%thinkphp%') OR ( title like '%thinkphp%') )
復(fù)合查詢(xún)使用了_complex作為子查詢(xún)條件來(lái)定義,配合之前的查詢(xún)方式,可以非常靈活的制定更加復(fù)雜的查詢(xún)條件。
很多查詢(xún)方式可以相互轉(zhuǎn)換,例如上面的查詢(xún)條件可以改成:
$where['id'] = array('gt',1); $where['_string'] = ' (name like "%thinkphp%") OR ( title like "%thinkphp") ';
最后生成的SQL語(yǔ)句是一致的。
7.統(tǒng)計(jì)查詢(xún)
在應(yīng)用中我們經(jīng)常會(huì)用到一些統(tǒng)計(jì)數(shù)據(jù),例如當(dāng)前所有(或者滿(mǎn)足某些條件)的用戶(hù)數(shù)、所有用戶(hù)的最大積分、用戶(hù)的平均成績(jī)等等,ThinkPHP為這些統(tǒng)計(jì)操作提供了一系列的內(nèi)置方法,包括:
方法 | 說(shuō)明 |
---|---|
Count | 統(tǒng)計(jì)數(shù)量,參數(shù)是要統(tǒng)計(jì)的字段名(可選) |
Max | 獲取最大值,參數(shù)是要統(tǒng)計(jì)的字段名(必須) |
Min | 獲取最小值,參數(shù)是要統(tǒng)計(jì)的字段名(必須) |
Avg | 獲取平均值,參數(shù)是要統(tǒng)計(jì)的字段名(必須) |
Sum | 獲取總分,參數(shù)是要統(tǒng)計(jì)的字段名(必須) |
用法示例:
$User = M("User"); // 實(shí)例化User對(duì)象
獲取用戶(hù)數(shù):
$userCount = $User->count();
或者根據(jù)字段統(tǒng)計(jì):
$userCount = $User->count("id");
獲取用戶(hù)的最大積分:
$maxScore = $User->max('score');
獲取積分大于0的用戶(hù)的最小積分:
$minScore = $User->where('score>0')->min('score');
獲取用戶(hù)的平均積分:
$avgScore = $User->avg('score');
統(tǒng)計(jì)用戶(hù)的總成績(jī):
$sumScore = $User->sum('score');
并且所有的統(tǒng)計(jì)查詢(xún)均支持連貫操作的使用。
8.SQL查詢(xún)
ThinkPHP內(nèi)置的ORM和ActiveRecord模式實(shí)現(xiàn)了方便的數(shù)據(jù)存取操作,而且新版增加的連貫操作功能更是讓這個(gè)數(shù)據(jù)操作更加清晰,但是ThinkPHP仍然保留了原生的SQL查詢(xún)和執(zhí)行操作支持,為了滿(mǎn)足復(fù)雜查詢(xún)的需要和一些特殊的數(shù)據(jù)操作,SQL查詢(xún)的返回值因?yàn)槭侵苯臃祷氐腄b類(lèi)的查詢(xún)結(jié)果,沒(méi)有做任何的處理。主要包括下面兩個(gè)方法:
一、query方法
query 執(zhí)行SQL查詢(xún)操作 | |
---|---|
用法 | query($sql,$parse=false) |
參數(shù) | sql(必須):要查詢(xún)的SQL語(yǔ)句 parse(可選):是否需要解析SQL |
返回值 |
如果數(shù)據(jù)非法或者查詢(xún)錯(cuò)誤則返回false 否則返回查詢(xún)結(jié)果數(shù)據(jù)集(同select方法) |
$Model = new Model() // 實(shí)例化一個(gè)model對(duì)象 沒(méi)有對(duì)應(yīng)任何數(shù)據(jù)表 $Model->query("select * from think_user where status=1");
如果你當(dāng)前采用了分布式數(shù)據(jù)庫(kù),并且設(shè)置了讀寫(xiě)分離的話(huà),query方法始終是在讀服務(wù)器執(zhí)行,因此query方法對(duì)應(yīng)的都是讀操作,而不管你的SQL語(yǔ)句是什么。
二、execute方法
execute用于更新和寫(xiě)入數(shù)據(jù)的sql操作 | |
---|---|
用法 | execute($sql,$parse=false) |
參數(shù) | sql(必須):要執(zhí)行的SQL語(yǔ)句 parse(可選):是否需要解析SQL |
返回值 | 如果數(shù)據(jù)非法或者查詢(xún)錯(cuò)誤則返回false 否則返回影響的記錄數(shù) |
使用示例:
$Model = new Model() // 實(shí)例化一個(gè)model對(duì)象 沒(méi)有對(duì)應(yīng)任何數(shù)據(jù)表 $Model->execute("update think_user set name='thinkPHP' where status=1");
如果你當(dāng)前采用了分布式數(shù)據(jù)庫(kù),并且設(shè)置了讀寫(xiě)分離的話(huà),execute方法始終是在寫(xiě)服務(wù)器執(zhí)行,因此execute方法對(duì)應(yīng)的都是寫(xiě)操作,而不管你的SQL語(yǔ)句是什么。
9.動(dòng)態(tài)查詢(xún)
借助PHP5語(yǔ)言的特性,ThinkPHP實(shí)現(xiàn)了動(dòng)態(tài)查詢(xún),核心模型的動(dòng)態(tài)查詢(xún)方法包括下面幾種:
方法名 | 說(shuō)明 | 舉例 |
---|---|---|
getBy | 根據(jù)字段的值查詢(xún)數(shù)據(jù) | 例如,getByName,getByEmail |
getFieldBy | 根據(jù)字段查詢(xún)并返回某個(gè)字段的值 | 例如,getFieldByName |
該查詢(xún)方式針對(duì)數(shù)據(jù)表的字段進(jìn)行查詢(xún)。例如,User對(duì)象擁有id,name,email,address 等屬性,那么我們就可以使用下面的查詢(xún)方法來(lái)直接根據(jù)某個(gè)屬性來(lái)查詢(xún)符合條件的記錄。
$user = $User->getByName('liu21st'); $user = $User->getByEmail('liu21st@gmail.com'); $user = $User->getByAddress('中國(guó)深圳');
暫時(shí)不支持多數(shù)據(jù)字段的動(dòng)態(tài)查詢(xún)方法,請(qǐng)使用find方法和select方法進(jìn)行查詢(xún)。
二、getFieldBy動(dòng)態(tài)查詢(xún)
針對(duì)某個(gè)字段查詢(xún)并返回某個(gè)字段的值,例如
$userId = $User->getFieldByName('liu21st','id');
表示根據(jù)用戶(hù)的name獲取用戶(hù)的id值。
10.子查詢(xún)
從3.0版本開(kāi)始新增了子查詢(xún)支持,有兩種使用方式:
1、使用select方法
當(dāng)select方法的參數(shù)為false的時(shí)候,表示不進(jìn)行查詢(xún)只是返回構(gòu)建SQL,例如:
// 首先構(gòu)造子查詢(xún)SQL $subQuery = $model->field('id,name')->table('tablename')->group('field')->where($where)->order('status')->select(false);
當(dāng)select方法傳入false參數(shù)的時(shí)候,表示不執(zhí)行當(dāng)前查詢(xún),而只是生成查詢(xún)SQL。
2、使用buildSql方法
$subQuery = $model->field('id,name')->table('tablename')->group('field')->where($where)->order('status')->buildSql();
調(diào)用buildSql方法后不會(huì)進(jìn)行實(shí)際的查詢(xún)操作,而只是生成該次查詢(xún)的SQL語(yǔ)句(為了避免混淆,會(huì)在SQL兩邊加上括號(hào)),然后我們直接在后續(xù)的查詢(xún)中直接調(diào)用。
// 利用子查詢(xún)進(jìn)行查詢(xún) $model->table($subQuery.' a')->where()->order()->select()
構(gòu)造的子查詢(xún)SQL可用于ThinkPHP的連貫操作方法,例如table where等。
- ThinkPHP中where()使用方法詳解
- ThinkPHP CURD方法之where方法詳解
- ThinkPHP Where 條件中常用表達(dá)式示例(詳解)
- ThinkPHP有變量的where條件分頁(yè)實(shí)例
- ThinkPHP5聯(lián)合(關(guān)聯(lián))查詢(xún)、多條件查詢(xún)與聚合查詢(xún)實(shí)例詳解
- Thinkphp使用mongodb數(shù)據(jù)庫(kù)實(shí)現(xiàn)多條件查詢(xún)方法
- thinkphp3查詢(xún)mssql數(shù)據(jù)庫(kù)亂碼解決方法分享
- 分享ThinkPHP3.2中關(guān)聯(lián)查詢(xún)解決思路
- 基于thinkPHP3.2實(shí)現(xiàn)微信接入及查詢(xún)token值的方法
- ThinkPHP3.1新特性之查詢(xún)條件預(yù)處理簡(jiǎn)介
- thinkphp3.2框架中where條件查詢(xún)用法總結(jié)
相關(guān)文章
基于JQuery+PHP編寫(xiě)砸金蛋中獎(jiǎng)程序
砸金蛋被廣泛應(yīng)用于慶典活動(dòng)、商家促銷(xiāo)、電視娛樂(lè)等場(chǎng)合,它的趣味、懸念能迅速活躍現(xiàn)場(chǎng)氣氛,同樣,我們也可以將砸金蛋應(yīng)用到WEB網(wǎng)站上,用于開(kāi)展線上活動(dòng),本文將使用jQuery+PHP講解如何實(shí)現(xiàn)一個(gè)WEB砸金蛋程序,需要的朋友一起來(lái)學(xué)習(xí)吧2015-09-09php實(shí)現(xiàn)文本數(shù)據(jù)導(dǎo)入SQL SERVER
php將文本文件導(dǎo)入mysql我們經(jīng)常遇到,但是如果是導(dǎo)入到sqlserver又應(yīng)該如何操作呢,下面就給大家分享一下本人的操作方法,感覺(jué)效率還不錯(cuò),這里推薦給大家。2015-05-05Laravel中的where高級(jí)使用方法實(shí)例講解
這篇文章主要介紹了Laravel中的where高級(jí)使用方法實(shí)例講解,有對(duì)于laravel中的sql中高級(jí)用法感興趣的同學(xué)可以看看文中的實(shí)例學(xué)習(xí)下2021-03-03PHP SPL標(biāo)準(zhǔn)庫(kù)之文件操作(SplFileInfo和SplFileObject)實(shí)例
這篇文章主要介紹了PHP SPL標(biāo)準(zhǔn)庫(kù)之文件操作(SplFileInfo和SplFileObject)實(shí)例,本文講解SplFileInfo用來(lái)獲取文件詳細(xì)信息、SplFileObject遍歷、查找指定行、寫(xiě)入csv文件等內(nèi)容,需要的朋友可以參考下2015-05-05laravel 出現(xiàn)command not found問(wèn)題的解決方案
今天小編就為大家分享一篇laravel 出現(xiàn)command not found問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10tp5實(shí)現(xiàn)微信小程序多圖片上傳到服務(wù)器功能
這最近在做一個(gè)教育類(lèi)的小商城的微信小程序,用到了上傳多個(gè)圖片文件到服務(wù)器端。下面腳本之家小編給大家?guī)?lái)了tp5實(shí)現(xiàn)微信小程序多圖片上傳到服務(wù)器的方法,需要的朋友可以參考下2018-07-07Laravel 不同生產(chǎn)環(huán)境服務(wù)器的判斷實(shí)踐
這篇文章主要介紹了Laravel 不同生產(chǎn)環(huán)境服務(wù)器的判斷實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Yii Framework框架使用PHPExcel組件的方法示例
這篇文章主要介紹了Yii Framework框架使用PHPExcel組件的方法,結(jié)合實(shí)例形式分析了Yii Framework框架中PHPExcel組件的下載、導(dǎo)入、調(diào)用等相關(guān)操作技巧,需要的朋友可以參考下2019-07-07