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();
    }
}

你可能感兴趣的:(phalcon)