久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

ThinkPHP開發(fā)指南-模型之創(chuàng)建數(shù)據(jù)

來自站長百科
Zhou3158討論 | 貢獻(xiàn)2010年5月7日 (五) 16:18的版本
(差異) ←上一版本 | 最后版本 (差異) | 下一版本→ (差異)
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

導(dǎo)航:上一頁

在進(jìn)行數(shù)據(jù)操作之前,我們往往需要手動(dòng)創(chuàng)建需要的數(shù)據(jù),例如對于提交的表單數(shù)據(jù):

// 獲取表單的POST數(shù)據(jù)

PHP代碼

$data['name'] = $_POST['name'];    

$data['email'] = $_POST['email']; 

// 更多的表單數(shù)據(jù)值獲取

……

然而ThinkPHP可以幫助你快速地創(chuàng)建數(shù)據(jù)對象,最典型的應(yīng)用就是自動(dòng)根據(jù)表單數(shù)據(jù)創(chuàng)建數(shù)據(jù)對象,這個(gè)優(yōu)勢在一個(gè)數(shù)據(jù)表的字段非常之多的情況下尤其明顯。

很簡單的例子:

// 實(shí)例化User模型

PHP代碼

$User->create();   

// 把創(chuàng)建的數(shù)據(jù)對象寫入數(shù)據(jù)庫

PHP代碼

$User->add();

Create方法支持從其它方式創(chuàng)建數(shù)據(jù)對象,例如,從其它的數(shù)據(jù)對象,或者數(shù)組等

PHP代碼


$data['name'] = 'ThinkPHP';    

$data['email'] = 'ThinkPHP@gmail.com';    

$User->create($data);

甚至還可以支持從對象創(chuàng)建新的數(shù)據(jù)對象

// 從User數(shù)據(jù)對象創(chuàng)建新的Member數(shù)據(jù)對象

PHP代碼

$User = M("User");    

$User->find(1);    

$Member = M("Member");    

$Member->create($User); 

而事實(shí)上,create方法所做的工作遠(yuǎn)非這么簡單,在創(chuàng)建數(shù)據(jù)對象的同時(shí),完成了一些很有意義的工作,包括:

  • 支持多種數(shù)據(jù)源
  • 令牌驗(yàn)證
  • 數(shù)據(jù)自動(dòng)驗(yàn)證
  • 字段映射支持
  • 字段類型檢查
  • 數(shù)據(jù)自動(dòng)完成

因此,我們熟悉的令牌驗(yàn)證、自動(dòng)驗(yàn)證和自動(dòng)完成(我們會在后面看到相關(guān)的用法)功能,其實(shí)都必須通過create方法才能生效。Create方法創(chuàng)建的數(shù)據(jù)對象是保存在內(nèi)存中,并沒有實(shí)際寫入到數(shù)據(jù)庫中,直到使用add或者save方法。如果只是想簡單創(chuàng)建一個(gè)數(shù)據(jù)對象,并不需要完成一些額外的功能的話,可以使用data方法簡單的創(chuàng)建數(shù)據(jù)對象。

使用如下

// 實(shí)例化User模型

PHP代碼

$User = M('User'); 

// 創(chuàng)建數(shù)據(jù)后寫入到數(shù)據(jù)庫

PHP代碼


$data['name'] = 'ThinkPHP';    

$data['email'] = 'ThinkPHP@gmail.com';    

$User->data($data)->add(); 

使用data方法創(chuàng)建的數(shù)據(jù)對象不會進(jìn)行自動(dòng)驗(yàn)證和過濾操作,請自行處理。但在進(jìn)行add或者save操作的時(shí)候,數(shù)據(jù)表中不存在的字段以及非法的數(shù)據(jù)類型(例如對象、數(shù)組等非標(biāo)量數(shù)據(jù))是會自動(dòng)過濾的,不用擔(dān)心非數(shù)據(jù)表字段的寫入導(dǎo)致SQL錯(cuò)誤的問題。