【小(xiǎo)編推薦】ThinkPHP3.2——Ac £tiveRecord

2014-06-26  &nb₩¥✔sp;|   發布者:梁國(¥≥♥ guó)芳   | &n©γ→bsp; 查看(kàn):3320次☆•≈

Thinkphp

ThinkPHP實現(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ò♦φφ)。

創建數(shù)據

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 然後直接給數(shù)據對(duì)•α©↑象賦值
  3. $User->name = 'ThinkPHP';
  4. $User->email = 'ThinkPHP@gmail.com';
  5. // 把數(shù)據對(duì)象添加到(dà‌™•≠o)數(shù)據庫
  6. $User->add();

如(rú)果使用(yòng)了(le)create→×方法創建數(shù)據對(duì)象的(de≠↑™)話(huà),仍然可(kě)以在創建完成後進行(xíng)賦值

  1. $User = D("User");
  2. $User->create(); // 創建User數(shù)據對(duì)象,默認通(tōng)過表單提"≤•交的(de)數(shù)據進行(xíng)創建
  3. // 增加或者更改其中的(de)屬性
  4. $User->status = 1;
  5. $User->create_time = time();
  6. // 把數(shù)據對(duì)象添加到(dào)數(shù)據庫
  7. $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)方法:

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. // 查找id為(wèi)8的(de)用(yòng)戶數(shù↔¥)據
  3. $User->where('id=8')->find();

用(yòng)AR模式的(de)話(huà)可(kě)以直接寫成:

  1. $User->find(8);

如(rú)果要(yào)根據某個(gè)£β字段查詢,例如(rú)查詢姓名為(wèi)ThinkPHPγ©≥☆的(de)可(kě)以用(yòng):

  1. $User = M("User"); // 實例化(huà)User對(duì)象
  2. $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ù)據:

  1. echo $User->name;
  2. echo $User->email;

如(rú)果要(yào)查詢數(shù)據集,可(kě)以直∞©​接使用(yòng):

  1. // 查找主鍵為(wèi)1、3、8的(de)多(dεγuō)個(gè)數(shù)據
  2. $userList = $User->select('1,3,8');

更新記錄

在完成查詢後,可(kě)以直接修改數(shù∑©)據對(duì)象然後保存到(dào)數(s↑ε↑σhù)據庫。

  1. $User->find(1); // 查找主鍵為(wèi)1的(de)數(shù)據
  2. $User->name = 'TOPThink'; // 修改數(shù)據對(duì)象
  3. $User->save(); // 保存當前數(shù)據對(duì)象

上(shàng)面這(zhè)種方式僅僅 ₩是(shì)示例,不(bù)代表保存操作(zuò)之前♦×♦一(yī)定要(yào)先查詢。因為(wèi)下(xià)面的≥÷♣ (de)方式其實是(shì)等效的(de):

  1. $User->id = 1;
  2. $User->name = 'TOPThink'; // 修改數(shù)據對(duì)象
  3. $User->save(); // 保存當前數(shù)據對(duì)象

删除記錄

可(kě)以删除當前查詢的(de)數(shù)據≥¥÷對(duì)象

  1. $User->find(2);
  2. $User->delete(); // 删除當前的(de)數(shù)據對(duì)象λ≈≈φ

或者直接根據主鍵進行(xíng)删除

  1. $User->delete(8); // 删除主鍵為(wèi)8的(de)數(shù)據
  2. $User->delete('5,6'); // 删除主鍵為(wèi)5、6的(de)多∏'(duō)個(gè)數(shù)據