• 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(),
    ));

  • 相关阅读:
    django学习-33.【一对多】表关系对应的完整业务操作
    django学习-32.发送满足【邮件正文值为一个html页面+有多个附件】的单个邮件
    django学习-31.发送满足【邮件正文值为一个html页面】的单个邮件
    东芝TC10 512G使用半年后掉速严重
    添加Linux服务(Debian 8+,Systemd)
    C# LinkedList
    在VS2019里面 C# 和SqlSerer的勾兑
    Jquery垂直下拉二级菜单
    (二十六)运输层--TCP的拥塞控制的一般原理
    (二十五)运输层--TCP的流量控制
  • 原文地址:https://www.cnblogs.com/xiaoleiel/p/8295089.html
Copyright © 2020-2023  润新知