
2014-06-26 &nb₩¥✔sp;| 發布者:梁國(¥≥♥ guó)芳 | &n©γ→bsp; 查看(kàn):3320次☆•≈
ThinkphpThinkPHP實現(xiàn)了(le)ActiveRecords模☆α式的(de)ORM模型,采用(yòng)了&$(le)非标準的(de)ORM模型:表映射到(dào)±•類,記錄映射到(dào)對(duì)象。最λ₹₽φ大(dà)的(de)特點就(jiù)是(shì)使用(yòng)方便和('¶♣hé)便于理(lǐ)解(因為(wèi)采用(yòng)了(le)&$對(duì)象化(huà)),提供了(le)開( γkāi)發的(de)最佳體(tǐ)驗,從(cóng)而達到(dào)₽•₽敏捷開(kāi)發的(de)目的(de)。
下(xià)面我們用(yòng)AR模式來(lái)∏©換一(yī)種方式重新完成CURD操作(zuò♦φφ)。
$User = M("User"); // 實例化(huà)User對(duì)象// 然後直接給數(shù)據對(duì)•α©↑象賦值$User->name = 'ThinkPHP';$User->email = 'ThinkPHP@gmail.com';// 把數(shù)據對(duì)象添加到(dà™•≠o)數(shù)據庫$User->add();
如(rú)果使用(yòng)了(le)create→×方法創建數(shù)據對(duì)象的(de≠↑™)話(huà),仍然可(kě)以在創建完成後進行(xíng)賦值
$User = D("User");$User->create(); // 創建User數(shù)據對(duì)象,默認通(tōng)過表單提"≤•交的(de)數(shù)據進行(xíng)創建// 增加或者更改其中的(de)屬性$User->status = 1;$User->create_time = time();// 把數(shù)據對(duì)象添加到(dào)數(shù)據庫$User->add();
AR模式的(de)數(shù)據查詢比較簡單,因為(wèi)更多(duō≠≤"←)情況下(xià)面查詢條件(jiàn)都(dōu)是(shì)以主鍵↔φ→或者某個(gè)關鍵的(de)字段。這(£zhè)種類型的(de)查詢,ThinkPHP有(yǒu)著(zh₽×♣e)很(hěn)好(hǎo)的(de)支持。 先舉個(gè)最簡§∞∑單的(de)例子(zǐ),假如(rú)我們要(yào)查詢主鍵為γγ(wèi)8的(de)某個(gè)用(yòng)戶記錄,如♠×∑¥(rú)果按照(zhào)之前的(de)方式,我們可(kě)能(néng)≠¶會(huì)使用(yòng)下(xià)面§γ的(de)方法:
$User = M("User"); // 實例化(huà)User對(duì)象// 查找id為(wèi)8的(de)用(yòng)戶數(shù↔¥)據$User->where('id=8')->find();
用(yòng)AR模式的(de)話(huà)可(kě)以直接寫成:
$User->find(8);
如(rú)果要(yào)根據某個(gè)£β字段查詢,例如(rú)查詢姓名為(wèi)ThinkPHPγ©≥☆的(de)可(kě)以用(yòng):
$User = M("User"); // 實例化(huà)User對(duì)象$User->getByName("ThinkPHP");
這(zhè)個(gè)作(zuò)為(wèi)∑₽ε查詢語言來(lái)說(shuō)是(shì)最為(wè€i)直觀的(de),如(rú)果查詢成功,查詢的(de)結果直接保存在當前的£★(de)數(shù)據對(duì)象中,在進行(xíng)下(xià)一(y÷♦φ₽ī)次查詢操作(zuò)之前,我們都(dōu)可(kě)以提'取,例如(rú)獲取查詢的(de)結果數(shù)據:
echo $User->name;echo $User->email;
如(rú)果要(yào)查詢數(shù)據集,可(kě)以直∞©接使用(yòng):
// 查找主鍵為(wèi)1、3、8的(de)多(dεγuō)個(gè)數(shù)據$userList = $User->select('1,3,8');
在完成查詢後,可(kě)以直接修改數(shù∑©)據對(duì)象然後保存到(dào)數(s↑ε↑σhù)據庫。
$User->find(1); // 查找主鍵為(wèi)1的(de)數(shù)據$User->name = 'TOPThink'; // 修改數(shù)據對(duì)象$User->save(); // 保存當前數(shù)據對(duì)象
上(shàng)面這(zhè)種方式僅僅 ₩是(shì)示例,不(bù)代表保存操作(zuò)之前♦×♦一(yī)定要(yào)先查詢。因為(wèi)下(xià)面的≥÷♣ (de)方式其實是(shì)等效的(de):
$User->id = 1;$User->name = 'TOPThink'; // 修改數(shù)據對(duì)象$User->save(); // 保存當前數(shù)據對(duì)象
可(kě)以删除當前查詢的(de)數(shù)據≥¥÷對(duì)象
$User->find(2);$User->delete(); // 删除當前的(de)數(shù)據對(duì)象λ≈≈φ
或者直接根據主鍵進行(xíng)删除
$User->delete(8); // 删除主鍵為(wèi)8的(de)數(shù)據$User->delete('5,6'); // 删除主鍵為(wèi)5、6的(de)多∏'(duō)個(gè)數(shù)據
