ThinkPHP的CURD易忽視點小結
1、不定義方法,直接渲染範本。
對於沒有任何實際邏輯的操作方法,我們只需要直接定義對應的範本檔就行了,比如表單頁面,這個頁面一般不會有變數向範本中輸出,所以,我們沒有必要再去寫一個對應的空方法然後$this->display()了。
2、簡介create方法。
假設我們具現化的模型為$model,那麼ThinkPHP可以直接通過$model->add()的方式向資料庫中添加資料,那麼如果我們在$model->add()之前調用$model->create() 方法,這樣有什麼意義呢? create()方法的意義只有一個「確保寫入資料庫的資料安全和有效」。
其中,資料的自動驗證便是借助create方法來實現的。 值得一提的是,用create方法實現自動驗證,需要我們定義模型**Model.class.php,然後在具現化的時候使用D()方法進行具現化。
3、使用物件的方法插入資料。
可能你常常用下面的方式(陣列方式)插入資料
$Form = D('Form');
$data['title'] = 'ThinkPHP';
$data['content'] = '表單內容';
$Form->add($data);
其實ThinkPHP還支持對象的方式直接向資料庫插入資料,如下:
$Form = D('Form');
$Form->title = 'ThinkPHP';
$Form->content = '表單內容';
$Form->add();
4、不指定條件對資料更新。
$Form = M("Form"); 要修改的資料物件屬性賦值
$data['id'] = 5;
$data['title'] = 'ThinkPHP';
$data['content'] = 'ThinkPHP3.1版本發佈';
$Form->save($data); 根據條件保存修改的資料
save方法會自動識別資料物件中的主鍵欄位,並作為更新條件。 當然,你也可以顯式的傳入更新條件,也就是我們最常用的方法:
$Form = M("Form");
要修改的資料物件屬性賦值
$data['title'] = 'ThinkPHP';
$data['content'] = 'ThinkPHP3.1版本發佈';
$Form->where('id=5')->save($data); 根據條件保存修改的資料
其實還有物件的方式,就像上面提到的,插入資料,用物件的方式一樣:
$Form = M("Form");
要修改的資料物件屬性賦值
$Form->title = 'ThinkPHP';
$Form->content = 'ThinkPHP3.1版本發佈';
$Form->where('id=5')->save(); 根據條件保存修改的資料
並且,可以將主鍵欄位包含在要保存的資料裡,這樣就可以不需要寫where了
$Form = M("Form");
要修改的資料物件屬性賦值
$Form->id = 5;
$Form->title = 'ThinkPHP';
$Form->content = 'ThinkPHP3.1版本發佈';
$Form->save(); 根據資料物件中的主鍵保存修改的資料