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. 可以尝试用Google Font API来摆脱网页字体的单调 仅仅抛砖引玉

    http://www.nowamagic.net/librarys/veda/detail/2513

  2. PLSQL常用配置之窗口/版面保存、SQL格式化/美化、SQL注释\去掉注释等快捷键配置、登陆历史修改配置

    http://blog.csdn.net/hyeidolon/article/details/8251791   PLSQL常用配置之窗口/版面保存.SQL格式化/美化.SQL注释\去掉注释等快捷键配 ...

  3. webdriver API study

    This chapter cover all the interfaces of Selenium WebDriver. Recommended Import Style The API defini ...

  4. Android判断当前网络是否可用--示例代码

    Android判断当前网络是否可用--示例代码 分类: *07 Android 2011-05-24 13:46 7814人阅读 评论(4) 收藏 举报 网络androiddialogmanagern ...

  5. 文件描述符file descriptor与inode的相关知识

    每个进程在Linux内核中都有一个task_struct结构体来维护进程相关的 信息,称为进程描述符(Process Descriptor),而在操作系统理论中称为进程控制块 (PCB,Process ...

  6. C#字符串中特殊字符的转义

    再基础的东西不常用的话就得记下来...不然就忘记了. 比如C#中对字符串中特殊字符的转义,一个是双引号",另一个就是转义符\ 对于同样一个字符串:地址:"C:\Users\E.tx ...

  7. 面向对象中private理解

    我们大家都知道思想訪问修饰符.public,protected,private,那么我们知道了继承中private私有属性能够继承吗?我么接下来做个小实验 class A {     private ...

  8. [na]诺顿ghost磁盘对刻(备份系统分区或数据分区)

    一 诺顿ghost简介 ,可以克隆分区 也可以克隆磁盘 ,克隆成img或磁盘内容对刻 ,磁盘分区--img---磁盘分区 磁盘---磁盘 二 操作步骤 对刻好的系统 整体思路: ,A是模板机,A有C ...

  9. 【Android】7.4TableLayout(表格布局)

    分类:C#.Android.VS2015: 创建日期:2016-02-11 一.简介 TableLayout也是用行和列划分单元格,但不会显示Row.Column以及Cell的边框线,其子元素有许多T ...

  10. 在 Chrome 开发者工具中调试 node.js

    命令行工具 devtool ,它可以在 Chrome 的开发者工具中运行 Node.js 程序. 下面的记录显示了在一个 HTTP 服务器中设置断点的情况. 该工具基于 Electron 将 Node ...