WIKI使用導(dǎo)航
站長百科導(dǎo)航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機(jī)
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計(jì)算
- 微博營銷
- 虛擬主機(jī)管理系統(tǒng)
- 開放平臺
- WIKI程序與應(yīng)用
- 美國十大主機(jī)
ThinkPHP開發(fā)指南-模型之創(chuàng)建數(shù)據(jù)
導(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ò)誤的問題。