Model:
表与表之间的关系:
hasOne 一对一( $fields, $referenceModel, $referencedFields : 当前表中的字段, 对应关系模型, 对应关系模型中表的字字段 )
hasMany 一对多 ( $fields, $referenceModel, $referencedFields : 当前表中的字段, 对应关系模型, 对应关系模型中表的字字段 )
hasManyToMany 多对多
belongsTo 多对一( 属于 ) ( $fields, $referenceModel, $referencedFields : 当前表中的字段, 对应关系模型, 对应关系模型中表的字字段 )
*********** 如项目中存在命名空间 则 要在对应的关系中添加alias参数 array( 'alias' => 'namespace' )

$this->hasMany( 'id', 'Mp\pri\models\RolesUsers' , 'roleid', array( 'alias' => 'rolesusers' ));
$this->hasMany( 'id', 'Mp\pri\models\RolesMenus' , 'roleid', array( 'alias' => 'rolesmenus' ));

Phalcon中设置允许数据动态更新:( 初始化的时候 )

$this->useDynamicUpdate( true );

Phalocn中设置软删除标记:( 初始化的时候 )

use Phalcon\Mvc\Model\Behavior\SoftDelete;
$this->addBehavior( new SoftDelete(
  array(
    'field' => 'delsign',
    'value' => SystemEnums::DELSIGN_YES,
  )
) );
$res = Roles::findFirst( $where )->delete();
//当判断是否删除成功与否
if( empty( $res ) )
{//delete error
}
else
{//delete success
}

项目多模块并存在有命名:(跨模块取数据)

因类存在命名空间问题 如果保存成对象, 在取出数据的时候因存在命名空间限制 会取不到session中的数据 ------ 解决方法 将数据保存成数组存入session中

Phalcon 添加/更新数据:

$id = $this->request->getPost('id');

if( isset( $id ) && FALSE != $id )  {
  $where = array(
    'conditions' => 'delsign=:del: and id=:optid:',
    'bind' => array( 'del' => SystemEnums::DELSIGN_NO,'optid' => $id ),
  );
  $cache = Cache::findFirst( $where );
  $cache->delsign = SystemEnums::DELSIGN_YES;
  $cache->modtime = TimeUtils::getFullTime();
  $cache->title = 'Login';
  $cache->action = 'loadding';
  $cache->seconds = 100;
  $cache->module_name = 'appmgr';
}

//add 
else  {
  $cache = new Cache();
  $cache->title = 'Roles';
  $cache->module_name = 'pri';
  $cache->controller = 'Roles';
  $cache->action = 'list';
  $cache->seconds = 20;
  $cache->comment = 'Add Test';
  $cache->createtime = TimeUtils::getFullTime();
  $cache->modtime = TimeUtils::getFullTime();
  $cache->delsign = SystemEnums::DELSIGN_NO;
}
if (! $cache->save()) {
  foreach ($cache->getMessages() as $message) {
    echo "Message: ", $message->getMessage();
    echo "Field: ", $message->getField();
    echo "Type: ", $message->getType();
  }
}
else {
  echo 'No Error';
}
exit;

采用PHQL方式更新数据:

$query = $this->modelsManager->createQuery( 'update \Mp\sys\Models\Cache set title =:tit:,modtime=:time: where id = :id:' );
$res = $query->execute(array(
  'tit' => $cache_name,
  'id' => $id,
  'time' => TimeUtils::getFullTime(),
));

Phalcon学习-model的更多相关文章

  1. backbone库学习-model

    backbone库的结构: http://www.cnblogs.com/nuysoft/archive/2012/03/19/2404274.html 本文所有例子来自于http://blog.cs ...

  2. Django框架学习-Model进阶用法

    Model进阶用法 回顾 访问外键 访问多对多关系 更改数据库结构 当处理数据库结构改变时,需要注意到几点: 增加字段 首先在开发环境中: 再到产品环境中: 删除字段 删除多对多字段 删除model ...

  3. Python学习---Model拾遗[2]180318

    Model的字段及字段参数: Model字段: 数字        字符串(带正则的字段)        时间        文件       特殊字段:(一对一,一对多,多对多) Models.py ...

  4. Python学习---Model拾遗[1]180318

    Model: 强大的数据库操作,弱小的数据验证 Form:  强大的数据验证 ModelForm: 强大的数据验证 + 弱小的数据库操作 Model拾遗 Model基本操作 1. 创建数据库表2. 修 ...

  5. phalcon(费尔康)框架学习笔记

    phalcon(费尔康)框架学习笔记 http://www.qixing318.com/article/phalcon-framework-to-study-notes.html 目录结构   pha ...

  6. 解决phalcon model在插入或更新时会自动验证非空字段

    在使用phalcon的insert和update功能时,因为数据库所有的字段设置的都是NOT NULL,而phalcon的model在插入或更新之前会自动判断字段是否需要必填,因此导致有空字段时无法存 ...

  7. phalcon:model 事件与事件管理器

    事件与事件管理器(Events and Events Manager)¶ Models allow you to implement events that will be thrown when p ...

  8. phalcon: 按年分表的model怎么建?table2017,table2018...相同名的分表模型怎么建

    phalcon: 按年分表的model怎么建?table2017,table2018...相同名的分表模型怎么建 场景:当前有一张表:Ntime,因为表太大了,考虑要分表: Ntime2017 Nti ...

  9. phalcon框架安装

    Phalcon学习笔记 - 安装 原创 2014年10月23日 12:20:33 标签: phalcon / phalcon安装 5014 如何学习一个新的框架 1  明白工作原理 2  知道核心思想 ...

随机推荐

  1. 【java设计模式】之 代理(Proxy)模式

    代理模式的核心作用就是通过代理,控制对对象的访问.这跟实际中是一样的,比如说明星都有经纪人,这就是一个代理,比如有人要找某明星拍戏,那么首先处理这事的是他的经纪人,虽然拍戏需要自己拍,但是拍戏前后的一 ...

  2. 转: javascript动态添加、修改、删除对象的属性和方法

    在其他语言中,对象一旦生成,就不可更改了,要为一个对象添加修改成员必须要在对应的类中修改,并重新实例化,而且程序必须经过重新编译.JavaScript 中却非如此,它提供了灵活的机制来修改对象的行为, ...

  3. android 自定义ViewSwipeBackHelper,实现左滑结束Activity

     https://github.com/Jude95/SwipeBackHelper Git上看到一个基于SwipeBackLayout的实现,可以让我们在使用过程中在不使用物理返回键的情况下舍去了返 ...

  4. js 重写 bootstrap 样式 alert/confirm 消息窗口

    相信很多人都受够了 alert.confirm 的样子,最近正在用 bootstrap 做项目,顺便封装了一个 bootstrap 样式的消息框. 实现起来很简单,bootstrap 本身就自带了 m ...

  5. python标准库介绍——2 os.path模块详解

    == os.path 模块 == ``os.path`` 模块包含了各种处理长文件名(路径名)的函数. 先导入 (import) ``os`` 模块, 然后就可以以 ``os.path`` 访问该模块 ...

  6. RUBY Error: Please update your PATH to include build tools or download the DevKit

    出错的原因是安装XXXXX的时候,需要build tools,但系统中没有.出错信息中同时也给出了解决的法案: 1. 到 http://rubyinstaller.org/downloads/ 去下载 ...

  7. A simple case to use Celery:

    Prerequisites:   1: Install RabbitMQ as it would be used as message broker for Celery. In windows, i ...

  8. 基于FPGA的异步FIFO设计

    今天要介绍的异步FIFO,可以有不同的读写时钟,即不同的时钟域.由于异步FIFO没有外部地址端口,因此内部采用读写指针并顺序读写,即先写进FIFO的数据先读取(简称先进先出).这里的读写指针是异步的, ...

  9. uva--242(邮资问题 dp)

    输入输出: id=26127" style="color:blue; text-decoration:none">Sample Input 5 2 4 1 4 12 ...

  10. onethink迁移

    修改applicattion下面的Common跟User里面的config.php文件两个