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. [转]MegCup2015初赛题

    原文链接 门票题:数独有多少种对解线上没有1的填法? 这道"门票题"虽说只是"热身",但还是有一定难度的.共有245名选手通过各种方法拿到了门票.下面,我们就为 ...

  2. 使用自定义模板来弥补eclipse没有新建Filter的功能

    http://yufei.iteye.com/blog/125012 eclipse插件,并没有为我们提供Filter的新建功能,为此我们不得不每次都去新建个类,然后输入那繁琐的重复代码,这完全就是浪 ...

  3. Java虚拟机学习 - 对象内存分配与回收 ( 5 )

    对象优先在Eden上分配 大多数情况下,对象优先在新生代Eden区域中分配.当Eden内存区域没有足够的空间进行分配时,虚拟机将触发一次 Minor GC(新生代GC).Minor GC期间虚拟机将E ...

  4. POJ 2965 The Pilots Brothers' refrigerator (DFS)

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15136 ...

  5. pythonl练习笔记——爬虫的初级、中级、高级所匹配的知识

    1 初级爬虫 (1)Web前端的知识:HTML, CSS, JavaScript, DOM, DHTML, Ajax, jQuery,json等: (2)正则表达式,能提取正常一般网页中想要的信息,比 ...

  6. if else和switch的效率

    switch和if-else相比,由于使用了Binary Tree算法,绝大部分情况下switch会快一点,除非是if-else的第一个条件就为true. 说实话  我也没有深入研究过这个问题的根源  ...

  7. Android屏幕density, dip等相关概念总结

     1.几个术语 VGA.HVGA.QVGA.WVGA.WQVGA 这些术语都是指屏幕的分辨率. VGA:Video Graphics Array.即:显示画图矩阵.相当于640×480 像素: HVG ...

  8. 使用命令行工具mysqlimport导入数据

    Usage: mysqlimport [OPTIONS] database textfile ... mysqlimport 程序是一个将以特定格式存放的文本数据(如通过“select * into ...

  9. SyntaxError: missing ] after element list 火狐问题

    关于火狐运行var obj = eval('(' + data + ')');时 报SyntaxError: missing ] after element list错误,Chrome和IE正常 情形 ...

  10. js动态给table添加/删除tr的方法

    js动态给table添加/删除tr的方法. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> ...