Fleaphp函數用法舉例,供大家學習

最近用了一下Fleaphp,也是菜鳥一小隻,反正我看fleaphp的API看的時候有時是懵懵懂懂,關鍵問題所在沒有例子,所以在學習的同時把常用的和不長用的函數做了一下整理,這裏包括在論壇上一些正確的答案,並加入了一些例子,方便一下想學fleaphp而又苦於看API的時候沒有例子看的朋友,鄙人也是小菜鳥,寫的不好,有些過於簡單,所以請大蝦閃過,鄙人是看到哪裏寫到哪裏,跳躍性比較大,有點亂,所以請大家不要驚慌,本人的思維是沒有問題的,請大家放心閱讀,如果想查看哪些函數,請在本WEB頁用ctrl+F查找,
今天寫了20個函數,所以先發20,有時間再寫再發,如果有些朋友想了解函數,又不願意自己測試,請寫發貼上來,鄙人有時間爲大家效勞,獻醜了...
1。FLEA_Db_TableDataGateway::update ()用法:
例如:修改一條 uid=22 的記錄, name字段改成"11", pass字段改成"22",就要這樣寫:
$data = array('uid'=>22,'name'=>11,'pass'=>22);
$table->update($data);

2。FLEA_Db_TableDataGateway::updateByConditions()用法:
例如:更新所有 level_ix = 3 的記錄,並且把這些記錄的特定字段(由 $row 確定)都更新爲指定的值。
$row = array(
   字段 => 字段值
   字段 => 字段值
   字段 => 字段值
   字段 => 字段值
);

$conditions = array('level_ix' => 3);
$table->updateByConditions($conditions, $row);


3。FLEA_Db_TableDataGateway::updateField()用途:更新記錄的指定字段,返回更新的記錄總數
例如:以查找滿足$conditions的條件,修改其中字段爲class_id的值爲$targetId.
$sourceId = $_POST['source'];
$targetId = $_POST['target'];
$conditions = array('class_id' => $sourceId);
$table->updateField($conditions,'class_id',$targetId);


4。FLEA_Db_TableDataGateway::updateRowset ()用途:更新記錄集(多行記錄)
用法和update ()類似,只不過是修改多條記錄:
例如:$data =array(array('id'=>'2','name'=>'111','job'=>'111'),array('id'=>'3','name'=>'222','job'=>'222'));
          $arr=$this->_test->updateRowset($data);想必大家能看明白吧...呵呵。。。
一定注意:$data 一定要是二維的,即使用updateRowset ()修改一條記錄也要這樣寫:
          $data=array(array('id'=>'2','name'=>'111','job'=>'111'));
說得清不清楚啊?呵呵

5。FLEA_Db_TableDataGateway::create ()用途:插入一條新記錄,返回新記錄的主鍵值
例如:$data = array(array('uid'=>22,'name'=>11,'pass'=>22),array('uid'=>23,'name'=>12,'pass'=>23));
           $table->create($data);

6.FLEA_Db_TableDataGateway::createRowset()插入多行記錄,返回包含所有新記錄主鍵值的數組
例如:$data = array(array('uid'=>22,'name'=>11,'pass'=>22),array('uid'=>23,'name'=>12,'pass'=>23));
           $table->createRowset($data);

7.FLEA_Db_TableDataGateway::remove () 刪除一條記錄,條件必須爲主鍵
例如:remove(array("id"=>"2"));


8。FLEA_Db_TableDataGateway::removeByConditions ()看名知義,當然是刪除符合條件的記錄嘍
正常情況下和remove()的條件可以通和,如果對有多個主鍵的表進行刪除操作:
conditions = array(
   '主鍵1' => xxx,
   '主鍵2' => yyy,
   '主鍵3' => zzz,
)
$table->removeByConditions($conditions);
另注意一點:如果某個表有多個主鍵的話,那麼它所對應的Model中的   $primaryKey 只能設置爲一個最常用的主鍵,不能設置爲一個數組

9。& FLEA_Db_TableDataGateway::findBySql ()用途:直接使用 sql 語句獲取記錄
例如: $arr=$this->_test->findBySql('SELECT * FROM newtable');

10。FLEA_Db_TableDataGateway::decrField ()用途:減小符合條件的記錄的指定字段的值,返回更新的記錄總數 (該操作不會引發任何事件,也不會處理關聯數據)。
例如:$arr=$this->_test->decrField(array('id'=>'3'),'prize',$decr = 2);
注意:$decr默認值爲1,數字2是本人自己改的,當然你也可以改爲34568了,改幾就減幾,明白了吧。。。

11。FLEA_Rbac_UsersManager::updatePasswordById ()用途:直接更新密碼
例如:把ID爲1的密碼設爲00000
$arr=$this->_student->updatePasswordById ('1','000000');
注意:前提是數據庫中一定要有叫做Password的字段;修改後的密碼是加密的。

12。FLEA_Rbac_UsersManager::checkPassword ()用途:檢查密碼的明文和密文是否符合
例如: $user = $usersManager->findByUsername('andy');
   $usersManager->checkPassword('000000', $user[$usersManager->passwordField]))

13.FLEA_Rbac_UsersManager::encodePassword ()用途:將密碼明文轉換爲密文
例如: $user = $this->_student->findByUsername('andy');
            $arr=$this->_student->encodePassword($user[$this->_student->passwordField]);
            $this->_student->updatePassword($user[username],$arr);
注意:前提是數據庫中一定要有叫做Password的字段;

14.FLEA_Rbac_UsersManager::updatePasswordById ()用途:直接更新密碼
     這個我不說了啊,我想聰明的你一看例11就會明白了

15。FLEA_Db_TableDataGateway::updateByConditions ()用途:更新符合條件的記錄,成功返回更新的記錄總數
例如: $condition=array('id'=>2);
            $row=array('name'=>'nicholas');
         $this->_test->updateByConditions($condition,$row);


16.FLEA_Db_TableDataGateway::updateField () 用途:更新記錄的指定字段,返回更新的記錄總數 該操作不會引發任何事件,也不會處理關聯數據。
例如:修改id爲2的記錄,把字段爲name的值修改爲vin就要這麼寫:
            $condition=array('id'=>2);
            $this->_test->updateField($condition,'name','vin');

17、FLEA_Db_TableDataGateway::incrField () 用途:增加符合條件的記錄的指定字段的值,返回更新的記錄總數
例如:這個也不說,去看例10吧,但要注意,例10是減,這個是加,嘿嘿。。。

18。FLEA_Db_TableDataGateway::replaceRowset () 用途:替換記錄集(多行數據),返回記錄集的主鍵字段值,失敗返回 false
     $condition=array(array('id'=>2,'name'=>nicholas,'job'=>good));
     $this->_test->replaceRowset($condition);
注意:1,假設表中有id,name,job,prize等,如果在$condition中沒寫prize字段,會就默認插入空,原有的數據會被清除,如不注意,也許會丟失數據 2。$condition一定是二維的

19。FLEA_Db_TableDataGateway::removeAll ()用途:刪除所有記錄,用時要謹慎
例如:$this->_test->removeAll ();

20。FLEA_Db_TableDataGateway::removeAllWithLinks ()用途:刪除所有記錄及關聯的數據
注意:這個更加要慎用,所有與這個表有關聯的表數據都將被刪除,何謂有關聯,也就是說,此表中的某個字段可能是另外一個表中的外鍵,此謂之有關聯。
例如:
在MODEL中一個叫做com的表關聯了一個叫做student的表,com表中的uid是student表中的外鍵,那麼我們就說這兩個表關聯起來了,是用下面的方法關聯起來的
class Model_com extends FLEA_Db_TableDataGateway
{
    var $tableName = 'newtable';
    var $primaryKey = 'uid';
    var $hasOne=array('tableClass' => 'Model_student',
            'foreignKey' => 'uid',
            'mappingName'=>'jobs');
}
這時,我們執行下面的語句:
$this->_test =& FLEA::getSingleton('Model_com');
$this->_test->removeAllWithLinks();
大家想會發生什麼後果?答對了,com表中的所有數據和student表中的所有數據都被刪除了,注意是數據被刪除了,表和字段還在。知道這個函數的邪惡了吧,所以請大家慎用。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章