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à):
namespace Home\Model;use Think\Model;Class UserModel extends Model{protected $_map = array('name' =>'username', // 把表單中name映射到(dào)數(shùγ≈€)據表的(de)username字段'mail' =>'email', // 把表單中的(de)mail映射到(dào)數(shù)據表δ≥×±的(de)email字段);}
這(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ǐ),
// 實例化(huà)User模型$User = D('User');$data = $User->find(3);dump($data);
輸出結果類似:
array(size=4)'id' => int 3'username'=> string 'thinkphp'(length=8)'email' => string 'thinkphp@gmail.com' (length=18)'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ù),
'READ_DATA_MAP'=>true
這(zhè)個(gè)時(shí)候,輸出結果類似:
array(size=4)'id' => int 3'name' => string 'thinkphp'(length=8)'mail' => string 'thinkphp@gmail.com' (length=18)'status' => int 1
或者直接使用(yòng)parseFieldsMap方法進行(xíng)轉換處理(lǐ),例如(rú):
// 實例化(huà)User模型$User = D('User');$data = $User->find(3);$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)。




