《PHP實例:Yii查詢生成器(Query Builder)用法實例教程》要點:
本文介紹了PHP實例:Yii查詢生成器(Query Builder)用法實例教程,希望對您有用。如果有疑問,可以聯系我們。
PHP教程本文為yii官網英文文檔的翻譯版本,主要介紹了Yii查詢生成器(Query Builder)的用法.分享給大家供大家參考之用.具體如下:
PHP教程首先,Yii的查詢生成器提供了用面向對象的方式寫SQL語句.它允許開發人員使用類的方法和屬性來指定一個SQL語句的各個部分.然后,組裝成一個有效的SQL語句,可以通過調用DAO數據拜訪對象的描述方法為進一步執行.以下顯示了一個典型的使用查詢生成器建立一個select語句:
PHP教程
$user = Yii::app()->db->createCommand()
->select('id, username, profile')
->from('tbl_user u')
->join('tbl_profile p', 'u.id=p.user_id')
->where('id=:id', array(':id'=>$id))
->queryRow();
PHP教程當你在應用程序中需要組裝SQL語句的程序,或基于一些條件邏輯時,最好使用查詢生成器.使用查詢生成器的好處主要包括:
PHP教程①.它可以建立復雜的SQL語句編程.
PHP教程②.它會自引用表名和列名防止SQL保留字和特殊字符的沖突.
PHP教程③.它還可以引用參數值和使用參數綁定,這有助于減少SQL注入攻擊的風險.
PHP教程④.它提供了一定程度的數據庫抽象,簡化了遷移到不同的數據庫平臺的成本.
PHP教程它不強制使用查詢生成器.事實上,如果你的查詢是簡單的,它是更容易和更快的直接寫SQL語句.
PHP教程注:查詢生成器不能用于修改現有的查詢指定為SQL語句.例如,下面的代碼將不能工作:
PHP教程
$command = Yii::app()->db->createCommand('SELECT * FROM tbl_user');
// the following line will NOT append WHERE clause to the above SQL
$command->where('id=:id', array(':id'=>$id));
PHP教程換句話說,不要混合使用普通的SQL和查詢生成器.
PHP教程1. 制備查詢生成器(Preparing Query Builder)
PHP教程Yii的查詢生成器是從 CDbCommand 提供主要數據庫查詢類,描述數據拜訪對象.
PHP教程開始使用查詢生成器,我們創造了 CDbCommand 的一個新實例,
PHP教程
$command = Yii::app()->db->createCommand();
PHP教程我們使用 Yii::app()->db 來獲得數據庫連接,然后調用 CDbConnection::createCommand() 創建所需的命令實例.
PHP教程請注意,將整個SQL語句放入 createcommand() ,叫做數據拜訪對象,我們需呀把設置它為空.這是因為我們將在下面的解釋中使用查詢生成器添加SQL語句的各個部分的方法.
PHP教程2. 建立數據檢索查詢(Building Data Retrieval Queries)
PHP教程數據檢索查詢是指選擇SQL語句.查詢生成器提供了一套辦法來建立一個SELECT語句的各個部分.因為所有這些辦法返回 CDbCommand 的實例,我們可以使用辦法鏈調用他們,如圖所示,在本節開頭的例子.
PHP教程select():???????????? 指定查詢的選擇部分?????????????????????? specifies the SELECT part of the query
selectDistinct():? 指定查詢不重復的選擇部分?????????????? specifies the SELECT part of the query and turns on the DISTINCT flag
from():????????????? 指定查詢的FROM?????????????????????????? specifies the FROM part of the query
where():??????????? 指定查詢的WHERE??????????????????????? specifies the WHERE part of the query
andWhere():????? 用and的方式添加到WHERE的條件中? appends condition to the WHERE part of the query with AND operator
orWhere():??????? 用or的方式添加到WHERE的條件中??? appends condition to the WHERE part of the query with OR operator
join():?????????????? 添加一個內部聯接的查詢片段??????????? appends an inner join query fragment
leftJoin():????????? 追加一個左外連接查詢片段?????????????? appends a left outer join query fragment
rightJoin():??????? 追加一個右外部聯接查詢片段??????????? appends a right outer join query fragment
crossJoin():?????? 追加一個交叉連接查詢片段?????????????? appends a cross join query fragment
naturalJoin():???? 追加一個自然連接查詢片段?????????????? appends a natural join query fragment
group():??????????? 指定查詢的GROUP BY?????????????????? specifies the GROUP BY part of the query
having():?????????? 指定查詢的HAVING?????????????????????? specifies the HAVING part of the query
order():??????????? 指定查詢的ORDER BY??????????????????? specifies the ORDER BY part of the query
limit():????????????? 指定查詢的LIMIT?????????????????????????? specifies the LIMIT part of the query
offset():?????????? 指定查詢的OFFSET??????????????????????? specifies the OFFSET part of the query
union():?????????? 添加查詢的UNION????????????????????????? appends a UNION query fragment
PHP教程在下面,我們將解釋如何使用這些查詢生成器辦法.為簡單起見,我們假設底層數據庫是MySQL.注意:如果你使用的是其他數據庫,表/列/值引用的例子可能是不同的.
PHP教程select()
PHP教程
function select($columns='*')
PHP教程該select()辦法指定一個查詢的選擇部分.$columns參數指定要選擇的列,它可以是一個字符串,用逗號分隔列,或者一個數組的列名稱.列的名稱可以包含表的前綴和 / 或列別名.該辦法將自動引用列名,除非一列包含一些括號(這意味著這個列是一個DB的表達式).
PHP教程下面是一些例子:
PHP教程
// SELECT *
select()
// SELECT `id`, `username`
select('id, username')
// SELECT `tbl_user`.`id`, `username` AS `name`
select('tbl_user.id, username as name')
// SELECT `id`, `username`
select(array('id', 'username'))
// SELECT `id`, count(*) as num
select(array('id', 'count(*) as num'))
PHP教程selectDistinct()
PHP教程
function selectDistinct($columns)
PHP教程selectdistinct()辦法類似于select(),除了它打開了 DISTINCT 的標志.例如,selectdistinct('id,用戶名”)會產生以下SQL:
PHP教程
SELECT DISTINCT `id`, `username`
PHP教程from()
PHP教程
function from($tables)
PHP教程from()辦法指定來了一個查詢的FROM部分. $tables 參數指定表的選擇.這可以是一個字符串,用逗號分隔的表的名稱,或表名數組.表的名稱可以包含架構前綴(例如公共.tbl_user)和/或表的別名(e.g.tbl_user U).該辦法將自動引用表的名稱,除非它包含一些括號(即表是一個給定的子查詢或DB的表達式).
PHP教程下面是一些例子:
PHP教程
// FROM `tbl_user`
from('tbl_user')
// FROM `tbl_user` `u`, `public`.`tbl_profile` `p`
from('tbl_user u, public.tbl_profile p')
// FROM `tbl_user`, `tbl_profile`
from(array('tbl_user', 'tbl_profile'))
// FROM `tbl_user`, (select * from tbl_profile) p
from(array('tbl_user', '(select * from tbl_profile) p'))
PHP教程where()
PHP教程
function where($conditions, $params=array())
PHP教程where()辦法指定查詢的WHERE.$conditions 參數指定查詢條件的同時,$params 指定參數綁定到整個查詢.$conditions參數可以是一個字符串(例如id = 1)或一個數組中的格式:
PHP教程array(operator, operand1, operand2, ...)
operator 可以是以下的任何一個:
PHP教程①.and: operands 應該使用 and 連接在一起.例如, array('and', 'id=1', 'id=2') 將產生 id=1 AND id=2 .如果一個操作數是一個數組,它將使用這里描述的相同規則轉換成一個字符串.例如,array('and', 'type=1', array('or', 'id=1', 'id=2')) 將生成 type=1 AND (id=1 OR id=2).
PHP教程②.or: 類似 and 操作,除了operands 是使用 OR 連接的.
PHP教程③.in: operand 1 應是一個列或 DB 表達式,而 operand 2 是代表值的范圍的數組,列或 DB 表達式應在這個數組的范圍內.例如,array('in', 'id', array(1,2,3)) 將生成 id IN (1,2,3).
PHP教程④.not in: 類似 in 操作,除了用 NOT IN 代替 IN? 去生成SQL.
PHP教程⑤.like: operand 1 應是一個列或 DB 表達式,而 operand 2 是代表值的范圍的數組,列或 DB 表達式應在這個數組的范圍內.例如,array('like', 'name', '%tester%') 會生成 name LIKE '%tester%'.當規定值的范圍為一個數組時,多個 LIKE 生成SQL時會用 AND 連接.例如,array('like', 'name', array('%test%', '%sample%')) 會生成 name LIKE '%test%' AND name LIKE '%sample%'.
PHP教程⑥.not like: 類似 like 的操作,除了用 NOT LIKE 代替 LIKE? 去生成SQL.
PHP教程⑦.or like: 類似 like 的操作,除了多個 like 生成 SQL 時用OR連接.
PHP教程⑧.or not like:? 類似 not like 的操作,除了多個 like 生成 SQL 時用OR連接.
PHP教程下面是一些例子,使用的地方:
PHP教程
// WHERE id=1 or id=2
where('id=1 or id=2')
// WHERE id=:id1 or id=:id2
where('id=:id1 or id=:id2', array(':id1'=>1, ':id2'=>2))
// WHERE id=1 OR id=2
where(array('or', 'id=1', 'id=2'))
// WHERE id=1 AND (type=2 OR type=3)
where(array('and', 'id=1', array('or', 'type=2', 'type=3')))
// WHERE `id` IN (1, 2)
where(array('in', 'id', array(1, 2))
// WHERE `id` NOT IN (1, 2)
where(array('not in', 'id', array(1,2)))
// WHERE `name` LIKE '%Qiang%'
where(array('like', 'name', '%Qiang%'))
// WHERE `name` LIKE '%Qiang' AND `name` LIKE '%Xue'
where(array('like', 'name', array('%Qiang', '%Xue')))
// WHERE `name` LIKE '%Qiang' OR `name` LIKE '%Xue'
where(array('or like', 'name', array('%Qiang', '%Xue')))
// WHERE `name` NOT LIKE '%Qiang%'
where(array('not like', 'name', '%Qiang%'))
// WHERE `name` NOT LIKE '%Qiang%' OR `name` NOT LIKE '%Xue%'
where(array('or not like', 'name', array('%Qiang%', '%Xue%')))
PHP教程請注意,當操作者含有like時,我們必須明確指定的通配符(如%和_)的模式.如果參數是從用戶的輸入,我們也應該使用下面的代碼轉義特殊字符,以防止他們被當作通配符:
PHP教程
$keyword=$_GET['q'];
// escape % and _ characters
$keyword=strtr($keyword, array('%'=>'\%', '_'=>'\_'));
$command->where(array('like', 'title', '%'.$keyword.'%'));
PHP教程andWhere()
PHP教程
function andWhere($conditions, $params=array())
PHP教程用and 的方式添加到WHERE的條件中.此辦法的行為幾乎是 where() 相同,除了它只是添加條件不能取代它.在 where() 文檔中有該辦法參數的詳細信息.
PHP教程orWhere()
PHP教程
function orWhere($conditions, $params=array())
PHP教程用 or 的方式添加到WHERE的條件中.此辦法的行為幾乎是 where() 相同,除了它只是添加條件不能取代它.在 where() 文檔中有該辦法參數的詳細信息.
PHP教程order()
PHP教程
function order($columns)
PHP教程order() 辦法指定查詢的ORDER BY部分.$columns 參數指定列進行排序,這可以是一個包含用逗號分隔列和order的方向(ASC 或 DESC)的字符串,或者一個列和order的方向的數組.列名稱可以包含表前綴.該辦法將自動引用列名,除非一列包含一些括號(即給出一個 DB 表達式).
PHP教程下面是一些例子:
PHP教程
// ORDER BY `name`, `id` DESC
order('name, id desc')
// ORDER BY `tbl_profile`.`name`, `id` DESC
order(array('tbl_profile.name', 'id desc'))
PHP教程limit() and offset()
PHP教程
function limit($limit, $offset=null)
function offset($offset)
PHP教程limit()和offset()辦法指定查詢的 LIMIT 和 OFFSET 部分.請注意,某些DBMS不支持 LIMIT 和 OFFSET 語法.在這種情況下,查詢生成器將改寫整個SQL語句來模擬 LIMIT 和 OFFSET 的功能.
PHP教程下面是一些例子:
PHP教程
// LIMIT 10 取前10條
limit(10)
// LIMIT 10 OFFSET 20 取到第21~30條
limit(10, 20)
// OFFSET 20 去掉前20條后剩下的數據
offset(20)
PHP教程join() and its variants
PHP教程
function join($table, $conditions, $params=array())
function leftJoin($table, $conditions, $params=array())
function rightJoin($table, $conditions, $params=array())
function crossJoin($table)
function naturalJoin($table)
PHP教程join()辦法及其變種指定如何與其他表連接,使用內部聯接,左外連接,右外部聯接,交叉連接,或自然連接. $table 參數指定要加入哪個表.表名可以包含數據庫的前綴和 / 或別名.該辦法將引用表名,除非它包含一個插入語,即一個DB表達式或子查詢. $conditions 參數指定連接條件.它的語法與where() 相同.$params 參數指定綁定到整個查詢的參數.
PHP教程值得注意的是,它不像其他的查詢生成器辦法,每次調用一個join辦法都會追加到SQL中.
PHP教程下面是一些例子:
PHP教程
// JOIN `tbl_profile` ON user_id=id
join('tbl_profile', 'user_id=id')
// LEFT JOIN `pub`.`tbl_profile` `p` ON p.user_id=id AND type=1
leftJoin('pub.tbl_profile p', 'p.user_id=id AND type=:type', array(':type'=>1))
PHP教程group()
PHP教程
function group($columns)
PHP教程group() 辦法指定查詢的GROUP BY. $columns 參數指定列進行分組,它可以是一個用逗號分隔的列的字符串,或者一個列的數組.列名稱可以包含表前綴.該辦法將自動引用列名,除非一列包含一些括號(即是一個 DB 表達式).
PHP教程下面是一些例子:
PHP教程
// GROUP BY `name`, `id`
group('name, id')
// GROUP BY `tbl_profile`.`name`, `id`
group(array('tbl_profile.name', 'id'))
PHP教程having()
PHP教程
function having($conditions, $params=array())
PHP教程having() 辦法指定查詢的 HAVING.它的使用方式與 where() 相同.
PHP教程下面是一些例子:
PHP教程
// HAVING id=1 or id=2
having('id=1 or id=2')
// HAVING id=1 OR id=2
having(array('or', 'id=1', 'id=2'))
PHP教程union()
PHP教程
function union($sql)
PHP教程union() 辦法指定查詢 UNION.它使用UNION操作附加到現有的SQL上.調用union()多次將現有的SQL附加多個表.
PHP教程下面是一些例子:
PHP教程
// UNION (select * from tbl_profile)
union('select * from tbl_profile')
PHP教程執行查詢(Executing Queries)
PHP教程調用上面查詢生成器的方法來建立一個查詢后,我們可以調用DAO方法數據拜訪對象執行查詢.例如,我們可以調用 CDbCommand::queryRow() 獲得連續的結果,或者使用 CDbCommand::queryAll() 立刻得到所有行.
PHP教程例子:
PHP教程
$users = Yii::app()->db->createCommand()
->select('*')
->from('tbl_user')
->queryAll();
PHP教程檢索表(Retrieving SQLs)
PHP教程除了執行查詢生成器的查詢,我們也可以獲取相應的SQL語句.這可以通過調用 CDbCommand::getText() 獲得.
PHP教程
$sql = Yii::app()->db->createCommand()
->select('*')
->from('tbl_user')
->text;
PHP教程如果有任何參數必須綁定到查詢的,他們可以通過 CDbCommand::params 的屬性綁定.
PHP教程建立查詢的替代語法(Alternative Syntax for Building Queries)
PHP教程有時,使用辦法鏈來建立一個查詢可能不是最佳的選擇.Yii的查詢生成器允許使用對簡單象屬性賦值的方式去建立查詢.特別是,每個查詢生成器的辦法都有一個具有相同名稱的屬性.給屬性賦值相當于調用相應的辦法.例如,下面兩個語句是等價的,假設$command 代表 CDbCommand 對象:
PHP教程
$command->select(array('id', 'username'));
$command->select = array('id', 'username');
PHP教程此外, CDbConnection::createCommand() 辦法可以把一個數組作為參數.數組中的鍵值對將被用來初始化創建的 CDbCommand 實例的屬性.這意味著,我們可以使用下面的代碼來建立一個查詢:
PHP教程
$row = Yii::app()->db->createCommand(array(
'select' => array('id', 'username'),
'from' => 'tbl_user',
'where' => 'id=:id',
'params' => array(':id'=>1),
))->queryRow();
PHP教程建立多個查詢(Building Multiple Queries)
PHP教程一個 CDbCommand 實例可以重復使用多次建立幾個查詢.建立一個新的查詢之前,需要調用 CDbCommand::reset() 辦法以清理前面的查詢.例子:
PHP教程
$command = Yii::app()->db->createCommand();
$users = $command->select('*')->from('tbl_users')->queryAll();
$command->reset(); // clean up the previous query
$posts = $command->select('*')->from('tbl_posts')->queryAll();
PHP教程3. 建立數據操作查詢(Building Data Manipulation Queries)
PHP教程數據操作查詢是指SQL語句插入,更新和刪除數據庫表中的數據.對應于這些查詢,查詢生成器分別提供了插入,更新和刪除的辦法.不同于上面介紹 SELECT 的查詢辦法,這些數據操作查詢辦法將建立一個完整的SQL語句,并立即執行.
PHP教程insert(): 將行插入到表
update(): 更新表中的數據
delete(): 從表中刪除數據
下面描述了這些數據操作查詢辦法.
PHP教程insert()
PHP教程
function insert($table, $columns)
PHP教程insert()辦法的建立和執行一條 INSERT SQL 語句. $table 參數指定要插入的表,而鍵值對數組 $columns 指定要插入的列的值.該辦法將轉義表名,并且將與綁定參數結合使用.
PHP教程下面是一個例子:
PHP教程
// build and execute the following SQL:
// INSERT INTO `tbl_user` (`name`, `email`) VALUES (:name, :email)
$command->insert('tbl_user', array(
'name'=>'Tester',
'email'=>'tester@example.com',
));
PHP教程update()
PHP教程
function update($table, $columns, $conditions='', $params=array())
PHP教程update()辦法的建立和執行一個SQL更新語句. $table 參數指定要更新的表; $columns 是鍵值對的數組,用于指定要更新的列值的;$conditions 和 $params 像where()一樣,指定 UPDATE 語句中的 WHERE 子句.該辦法將轉義表名,并且將與要更新的值的參數結合使用.
PHP教程下面是一個例子:
PHP教程
// build and execute the following SQL:
// UPDATE `tbl_user` SET `name`=:name WHERE id=:id
$command->update('tbl_user', array(
'name'=>'Tester',
), 'id=:id', array(':id'=>1));
PHP教程delete()
PHP教程
function delete($table, $conditions='', $params=array())
PHP教程delete()辦法的建立和執行一個SQL刪除語句. $table 參數指定要刪除數據的表;$conditions 和$params像where()一樣,指定 DELETE 語句中的 WHERE 子句.該辦法將正確轉義表名.
PHP教程下面是一個例子:
PHP教程
// build and execute the following SQL:
// DELETE FROM `tbl_user` WHERE id=:id
$command->delete('tbl_user', 'id=:id', array(':id'=>1));
PHP教程4. 建立架構操作查詢(Building Schema Manipulation Queries)
PHP教程除了正常的數據檢索和操作查詢,查詢生成器提供了一套用于可以把持數據庫的構建和執行SQL查詢的方法.它支持以下操作:
PHP教程createTable(): 創建一個表
renameTable(): 重命名表
dropTable(): 刪除一個表
truncateTable(): 截斷一個表,即刪除表中的所有數據但不刪除表本身
addColumn(): 給表添加列
renameColumn(): 重命名表中的列
alterColumn(): 改變一個表的列
addForeignKey(): 添加一個外鍵(自1.1.6可用)
dropForeignKey(): 刪除一個外鍵(自1.1.6可用)
dropColumn(): 刪除一個表的列
createIndex(): 創建一個索引
dropIndex(): 刪除一個索引
PHP教程Info: 雖然在不同的數據庫管理系統中SQL語句操作數據庫的模式有很大的不同,但查詢生成器試圖提供一個統一的接口,用于構建這些查詢.這簡化了數據庫遷移從一個數據庫管理系統到另一個任務.
PHP教程抽象數據類型 Abstract Data Types
PHP教程查詢生成器中引入了一組可以在定義表的列中使用抽象數據類型.與物理數據類型不同,物理數據類型有具體獨特的DBMS而且在不同的DBMS中有很大的不同,抽象數據類型都是獨立的DBMS.當抽象數據類型在定義表的列中使用時,查詢生成器將其轉換成相應的物理數據類型.
PHP教程下面的抽象數據類型由查詢生成器的支持.
PHP教程pk: 一個通用的主鍵類型,將被轉換成 int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY for MySQL;
string: 字符串類型,將被轉換成 varchar(255) for MySQL;
text: 文本型(長字符串),將被轉換成 text for MySQL;
integer: 整數類型,將被轉換成 int(11) for MySQL;
float: 浮點數類型,將被轉換成 float for MySQL;
decimal: 十進制數類型,將被轉換成 decimal for MySQL;
datetime: datetime類型,將被轉換成 datetime for MySQL;
timestamp: 時間戳類型,將被轉換成 timestamp for MySQL;
time: 時間類型,將被轉換成 time for MySQL;
date: 日期類型,將被轉換成 date for MySQL;
binary: 二進制數據類型,將被轉換成 blob for MySQL;
boolean: 布爾類型,將被轉換成 tinyint(1) for MySQL;
money: 金錢/貨幣型,將被轉換成 decimal(19,4) for MySQL. 自1.1.8版本開始此類型可以使用.
PHP教程createTable()
PHP教程
function createTable($table, $columns, $options=null)
PHP教程createTable() 辦法構建和執行一條創建表的SQL語句.$table 參數指定要創建的表的名稱. $columns 參數指定在新表中的列.他們必須被指定為名稱類型的鍵值對(e.g. 'username'=>'string'). $options 參數指定應附加到生成的SQL上的任何額外的SQL片段.查詢生成器將正確的引用的表名以及列名.
PHP教程當指定一個列的定義時,可以使用如上所述的抽象數據類型.查詢生成器會根據當前使用的數據庫管理系統的抽象數據類型轉換成相應的物理數據類型.例如,string 類型將被轉換為MySQL的 varchar(255).
PHP教程一個列定義還可以包含非抽象數據類型或規格.他們將沒有任何改變的被放置在生成的SQL中.例如,point 不是一個抽象數據類型,如果用在列定義,它會出現在生成的SQL中,而且 string NOT NULL將被轉換varchar(255) NOT NULL(即只有抽象類型的字符串轉換).
PHP教程下面是一個例子,顯示了如何創建一個表:
PHP教程
// CREATE TABLE `tbl_user` (
// `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
// `username` varchar(255) NOT NULL,
// `location` point
// ) ENGINE=InnoDB
createTable('tbl_user', array(
'id' => 'pk',
'username' => 'string NOT NULL',
'location' => 'point',
), 'ENGINE=InnoDB')
PHP教程renameTable()
PHP教程
function renameTable($table, $newName)
PHP教程renameTable() 辦法創建和執行一條重命名表名的SQL語句. $table 參數指定要重命名的表的名稱. $newName 參數指定表的新名稱.查詢生成器將正確引用的表名.
PHP教程下面是一個示例,演示了如何重命名表:
PHP教程
// RENAME TABLE `tbl_users` TO `tbl_user`
renameTable('tbl_users', 'tbl_user')
PHP教程dropTable()
PHP教程
function dropTable($table)
PHP教程dropTable() 辦法創建和執行一條刪除表的SQL語句.在$table 參數指定要刪除的表的名稱.查詢生成器會正確地引用的表名.
PHP教程下面是一個示例展示如何刪除一個表:
PHP教程
// DROP TABLE `tbl_user`
dropTable('tbl_user')
PHP教程truncateTable()
PHP教程
function truncateTable($table)
PHP教程truncateTable() 辦法建立和執行一條清空表數據的SQL語句. $table 參數指定清空的表名.查詢生成器會正確地引用的表名.
PHP教程下面是一個示例顯示如何清空表:
PHP教程
// TRUNCATE TABLE `tbl_user`
truncateTable('tbl_user')
PHP教程addColumn()
PHP教程
function addColumn($table, $column, $type)
PHP教程addColumn() 辦法創建并執行一條添加一個表的新列的SQL語句. $table 參數指定新列將被添加到的表的名稱. $column 參數指定新列的名稱. $type 指定新列的定義.列定義中可以包含抽象數據類型,如 "createTable"小節中的描述.查詢生成器將正確的引用的表名以及列名.
PHP教程下面是一個示例,演示如何添加一個表的列:
PHP教程
// ALTER TABLE `tbl_user` ADD `email` varchar(255) NOT NULL
addColumn('tbl_user', 'email', 'string NOT NULL')
PHP教程dropColumn()
PHP教程
function dropColumn($table, $column)
PHP教程dropColumn() 辦法創建和執行一條刪除表列的SQL語句. $table 參數指定要被刪除的列所屬的表名. $column 參數指定要被刪除的列名.查詢生成器將正確地引用的表名以及列名.
PHP教程下面是一個示例展示如何刪除一個表列:
PHP教程
// ALTER TABLE `tbl_user` DROP COLUMN `location`
dropColumn('tbl_user', 'location')
PHP教程renameColumn()
PHP教程
function renameColumn($table, $name, $newName)
PHP教程renameColumn() 辦法創建和執行一條重命名列的SQL語句. $table 參數指定要重命名的列所屬的表的名稱. $name 參數指定的舊列名. $newName 指定新的列名.查詢生成器將正確地引用的表名以及列名.
PHP教程下面是一個示例,展示了如何重命名表列:
PHP教程
// ALTER TABLE `tbl_users` CHANGE `name` `username` varchar(255) NOT NULL
renameColumn('tbl_user', 'name', 'username')
PHP教程alterColumn()
PHP教程
function alterColumn($table, $column, $type)
PHP教程alterColumn() 辦法創建和執行一條修改表列的SQL語句. $table 參數指定要被改變的列所屬的表的名稱. $column 參數指定被改變的列的名稱.$type 指定列的新定義.列定義中可以包含抽象數據類型,如 "createTable"小節中的描述.查詢生成器將正確的引用的表名以及列名.
PHP教程下面是一個示例,展示了如何更改一個表列:
PHP教程
// ALTER TABLE `tbl_user` CHANGE `username` `username` varchar(255) NOT NULL
alterColumn('tbl_user', 'username', 'string NOT NULL')
PHP教程addForeignKey()
PHP教程
function addForeignKey($name, $table, $columns,$refTable, $refColumns, $delete=null, $update=null)
PHP教程addForeignKey() 辦法創建和執行一條添加一個外鍵約束SQL語句. $name 參數指定外鍵的名稱. $table 和 $columns 參數指定外鍵的表名和列名.如果有多個列,他們應該用逗號字符分隔. $refTable 和 $refColumns 參數指定表名和列名的外鍵引用. $delete 和 $update 參數指定 SQL語句中的 ON DELETE 和ON UPDATE選項.大多數的DBMS都支持這些選項:RESTRICT, CASCADE, NO ACTION, SET DEFAULT, SET NULL. .查詢生成器會正確地引用表名,索引名和列名.
PHP教程下面是一個示例,演示如何添加一個外鍵約束:
PHP教程
// ALTER TABLE `tbl_profile` ADD CONSTRAINT `fk_profile_user_id`
// FOREIGN KEY (`user_id`) REFERENCES `tbl_user` (`id`)
// ON DELETE CASCADE ON UPDATE CASCADE
addForeignKey('fk_profile_user_id', 'tbl_profile', 'user_id', 'tbl_user', 'id', 'CASCADE', 'CASCADE')
PHP教程dropForeignKey()
PHP教程
function dropForeignKey($name, $table)
PHP教程dropForeignKey() 辦法創建和執行一條刪除一個外鍵約束的SQL語句. $name 參數指定的要刪除的外鍵約束的名稱. $table 參數指定外鍵所屬的表的名稱.查詢生成器將正確地引用的表名以及約束名稱.
PHP教程下面是一個示例,顯示了如何刪除外鍵約束:
PHP教程
// ALTER TABLE `tbl_profile` DROP FOREIGN KEY `fk_profile_user_id`
dropForeignKey('fk_profile_user_id', 'tbl_profile')
PHP教程createIndex()
PHP教程
function createIndex($name, $table, $column, $unique=false)
PHP教程createIndex() 辦法構建和執行一條創建索引的SQL語句. $name 參數指定要創建的索引的名稱.$table 參數指定索引所屬的表的名稱.$column 參數指定要索引的列的名稱. $unique 參數指定是否創建一個唯一索引.如果索引由多個列,則必須用逗號將它們隔開.查詢生成器會正確地引用表名,索引名和列名.
PHP教程下面是一個示例,顯示了如何創建索引:
PHP教程
// CREATE INDEX `idx_username` ON `tbl_user` (`username`)
createIndex('idx_username', 'tbl_user', 'username')
PHP教程dropIndex()
PHP教程
function dropIndex($name, $table)
PHP教程dropIndex() 辦法創建和執行一條刪除索引的SQL語句. $name 參數指定要刪除的索引的名稱.$table 參數指定索引所屬的表的名稱.查詢生成器將正確地引用的表名以及索引名稱.
PHP教程下面是一個示例,顯示了如何刪除索引:
PHP教程
// DROP INDEX `idx_username` ON `tbl_user`
dropIndex('idx_username', 'tbl_user')
PHP教程希望本文所述對大家yii學習有所贊助.
《PHP實例:Yii查詢生成器(Query Builder)用法實例教程》是否對您有啟發,歡迎查看更多與《PHP實例:Yii查詢生成器(Query Builder)用法實例教程》相關教程,學精學透。維易PHP學院為您提供精彩教程。