【小(xiǎo)編推薦】ThinkPHP3.2——字段映射¶♥φ☆

2014-06-26   |&n≥​bsp;  發布者:梁國(guó)芳 &nbs™ ★'p; |   查看(©±‌kàn):3320次

Thinkphp

ThinkPHP的(de)字段映射功能(néng)可(kě)以讓你(nǐ™∞¥∑)在表單中隐藏真正的(de)數(shù)據表字段,而不(bù)σ₽←∞用(yòng)擔心放(fàng)棄自(zì)動創建表單對(duì)象的(☆×★↔de)功能(néng),假設我們的(de)U$✔​∞ser表裡(lǐ)面有(yǒu)username和(σ©∑"hé)email字段,我們需要(yào)映射成另外(wài)的(de)字✔ ¥段,定義方式如(rú)下(xià):

  1. namespace Home\Model;
  2. use Think\Model;
  3. Class UserModel extends Model{
  4. protected $_map = array(
  5. 'name' =>'username', // 把表單中name映射到(dào)數(shùγ≈€)據表的(de)username字段
  6. 'mail' =>'email', // 把表單中的(de)mail映射到(dào)數(shù)據表δ≥×±的(de)email字段
  7. );
  8. }

這(zhè)樣,在表單裡(lǐ)面就(jiù)可(kě)以直接使用(yòngαα)name和(hé)mail名稱作(zuò)為(wèi)表單數(sh↓✔"ù)據提交了(le)。我們使用(yòng)create方法創建數(shù)據對(duì)象的(d←®§e)時(shí)候,會(huì)自(zì)動轉換成定義的(de)實±<€ε際數(shù)據表字段。

字段映射還(hái)可(kě)以支持對(duì)主鍵的(de)映射。

使用(yòng)字段映射後,默認不(bù)會(huì)對(dπ§↓uì)讀(dú)取的(de)數(shù)據會(huì↔•¶↓)自(zì)動處理(lǐ),

  1. // 實例化(huà)User模型
  2. $User = D('User');
  3. $data = $User->find(3);
  4. dump($data);

輸出結果類似:

  1. array(size=4)
  2. 'id' => int 3
  3. 'username'=> string 'thinkphp'(length=8)
  4. 'email' => string 'thinkphp@gmail.com' (length=18)
  5. 'status' => int 1

這(zhè)個(gè)時(shí)候取出的(de)data數(shùφλ↓)據包含的(de)是(shì)實際的(de)username和(hé)e•↕mail字段。

如(rú)果我們需要(yào)在數(shù)據獲取的(de)時→★ '(shí)候自(zì)動處理(lǐ)的(de)話(huà),設置開(k∑®∏♦āi)啓READ_DATA_MAP參數(shù),

  1. 'READ_DATA_MAP'=>true

這(zhè)個(gè)時(shí)候,輸出結果類似:

  1. array(size=4)
  2. 'id' => int 3
  3. 'name' => string 'thinkphp'(length=8)
  4. 'mail' => string 'thinkphp@gmail.com' (length=18)
  5. 'status' => int 1

或者直接使用(yòng)parseFieldsMap方法進行(xíng)轉換處理(lǐ),例如(rú):

  1. // 實例化(huà)User模型
  2. $User = D('User');
  3. $data = $User->find(3);
  4. $data = $User->parseFieldsMap($data);

通(tōng)過上(shàng)面的(de)兩種方式後,φσ$$無論是(shì)find還(hái)是(shì)select方法讀(☆♦dú)取後的(de)data數(shù)​>₩"據中就(jiù)包含了(le)name和(hé)mail字段數(s∏✔hù)據了(le),而不(bù)再有(yǒu)u​÷sername和(hé)email字段數(shσ←≈ù)據了(le)。