zoukankan      html  css  js  c++  java
  • Phalcon学习-model

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

    $this->hasMany( 'id', 'MpprimodelsRolesUsers' , 'roleid', array( 'alias' => 'rolesusers' ));
    $this->hasMany( 'id', 'MpprimodelsRolesMenus' , 'roleid', array( 'alias' => 'rolesmenus' ));

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

    $this->useDynamicUpdate( true ); 

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

    use PhalconMvcModelBehaviorSoftDelete;
    $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 MpsysModelsCache set title =:tit:,modtime=:time: where id = :id:' );
    $res = $query->execute(array(
      'tit' => $cache_name,
      'id' => $id,
      'time' => TimeUtils::getFullTime(),
    ));

  • 相关阅读:
    C#中NULL,"",DBNULL,String.Empty,Convert.IsDBNull()的区别
    vs 扩展和更新下载的插件在什么位置呢,看看吧,哈哈
    全面了解 Nginx 主要应用场景
    Nginx配置详解
    ulimit -n 修改
    mysql系列十一、mysql优化笔记:表设计、sql优化、配置优化
    java.net.UnknownHostException 异常处理
    Oracle 11G在用EXP 导出时,空表不能导出解决
    expdp和impdp导入和导出数据
    CentOS6.5运行yum报错:No module named yum
  • 原文地址:https://www.cnblogs.com/xiaoleiel/p/8295089.html
Copyright © 2011-2022 走看看