phalcon Model模型的基本使用與常用操作(增刪改查)

phalcon模型命名方式使用駝峯法,主要是用來跟數據庫交互,應用程序中的大部分業務邏輯都將集中在模型裏,l這裏把常用的模型操作做下筆記,phalcon框架的模型方式和框架提供的一些常用操作方法。

新建一個模型app/models/Rebots.php


class Rebots extends \Phalcon\Mvc\Model
{

    // 官方建議在模型中預先定義好所有的列,這樣可以減少模型內存的開銷以及內存分配。

    public $id;

    public $name;

    public $type;

    public $year;

    // initizelize 在請求期間僅會被自動調用一次,目的是爲模型實例進行初始化
    public function initialize()
    {

        // setSource()方法指定數據庫表
        $this->setSource('rebots');
    }

    /**
     *
     * 獲取一條記錄
     * 接受關聯數組作爲查詢條件:
     * @param $condition int|array 比如 id=1;
     * 參數說明: 比如 array("name='張三'")
     *
     * @return \Phalcon\Mvc\Model 返回一個模型實例
     */

    public function getFirst($condition)
    {
        return $this->findFirst($condition);
    }


    /**
     * 獲取多條記錄
     * 接受關聯數組作爲查詢條件:
     * @param $conditoin string|array
     *說明:
     * 1: 沒有條件獲取所有記錄
     *
     * 2: 字符串 name='張三' 獲取name等於張三的記錄
     *
     * 3: ["id < 5", 'order' => 'id desc', 'limit' => 10]
     *
     * 4: 如果需要通過外部數據(比如用戶輸入)或變量來查詢記錄,
     * 則必須要用`Binding Parameters`(綁定參數)的方式來防止SQL注入.
     * ["id < ':id:'", 
        'limit' => 10, 
        'bind'=>5]
     *
     * 5:綁定參數類型
        'bind' => ['id' => 5],
        ['bindTypes' => ['id' => \Phalcon\Db\Column::BIND_PARAM_INT]]]
     * @return \Phalcon\Mvc\ResultsetInterface
     */
    public function getMoreData($conditoin='')
    {
        return $this->find($conditoin);
    }


    /**
     * 查詢後置方法
     * 獲取記錄的初始化以及準備
     * 從數據庫中獲取了一條記錄之後,自動調用,可以爲某些字段做處理
     *
     */
    public function afterFetch()
    {
        $this->name = explode(' ', $this->name);
    }


    // 在調用save方法之前調用
    public function beforeSave()
    {
        $this->name = 'before Save';
    }

    // 在調用save方法之後調用
    public function afterSave()
    {
        $this->name = 'after save';
    }

    /**
    *更新數據/插入數據
    *$data = array(); 需要更新的數據
    *update更新數據
    *save 更新/插入
    */
    public function updateRecord($data=array())
    {
        // update方法更新一條語句,會根據id自動更新對應的紀錄
        $data = array(
            'id' => 9,
            'name' => '張三',
            'age' => '18',
            'address' => 'beijing'
        );
        $this->update($data);

        // save 方法可以更新和修改, 如果data數組中存在id,就更新,沒有id就自動插入,第二個字斷是一個數組,可以指定更新的字斷
        $data = array(
            'id' => 10,
            'name' => '張三',
            'age' => '18',
            'address' => 'beijing'
        );
        // 插入
        $this->save($data);

        // 更新
        $data = array(
            'id' => 10,
            'name' => '張三',
            'age' => '18',
            'address' => 'beijing'
        );
        $this->save($data);
    }



   /**
    *更新前置操作
    *調用update方法之前調用
    */
    public function beforeUpdate()
    {
    }

    /**
    *
    * 刪除一條記錄
    * return bool
    */
    public function deleteSecord(){
        $userTest = $this->findFirst(9);
        return $userTest->delete();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章