首页 QeePHP专区
  • 【1】【原创】QeePHP框架底层优化-10:解决对某种数组占位符表达式不支持的BUG

    blogdaren 2016-12-14   1283次来访
    源码详见: https://github.com/linuxphp/qeephp 问题现象: Model::find('title = ? and type = ?', array($title, $type))->asArray()->getOne(); 对于形如这样的写法,框架不支持。 解决方法: 代码里有详细的案例注释,详见截图...
  • 【2】【原创】qeephp优化-9:解决DB直连查询时因字符串变量引起的数据库查询失败的BUG

    blogdaren 2016-06-07   1237次来访
    问题现象: 问题原因: 定位到底层代码:  vi qee_framework/library/db/adapter/mysql.php +132 (1)  mysql_real_escape_string函数是依赖数据库连接的以及连接使用的字符集的 (2)  然而底层在调用qstr()方法时,若采用直连...
  • 【3】QDB_ActiveRecord_Abstract概述

    blogdaren 2015-02-14   1389次来访
    QDB_ActiveRecord_Abstract 实现了一个扩展的 ActiveRecord 模式。 主要特征包括: 静态的查找 find() 和删除方法 delete(),避免在领域对象中混入基础架构代码 以表数据入口为基础的 CRUD 操作,具备丰富的功能 对象属性可以设置为只读模式,并且可以指定属性的读写方法 丰富的事件回调 可透...
  • 【4】QeePHP数据库架构

    blogdaren 2015-02-14   1865次来访
    QeePHP的数据库架 构为QeePHP应用程序提供了全方位的数据库服务: 主要组件概述 QeePHP 数据库架构包含的主要组件分为三个级别。 最底层的是适配器、事务等组件,提供直接操作数据库的能力,并且为更上层的组件提供服务;位于中 间层次的则是表数据入口。表数据入口封装了对数据表的操作,既可以处理单独的记录,也可以高效得完成批量数据处理;最高层的ActiveRecord实际 ...
  • 【5】QeePHP的save()方法详解

    blogdaren 2015-02-14   1264次来访
    qeephp调用 save() 前一般模型都有主键值,这个时候回导致 save() 认为是要更新已有的对象,而不是创建新对象。 如果想创建新对象,解决办法是使用 save() 方法的第二个参数来强制创建新对象: <?php $user = new User(); $user->id = 1; $user->name = ‘theone’; $us...
  • 【6】【原创】Qeephp Modules模块使用方法

    blogdaren 2015-01-18   1185次来访
    问题背景:  模块有什么用呢?我想到的用途是,比如我公司要求后台的各个功能均模块化,一个文件夹代表一个功能。我们打算先做好一个模块库,然后在做网站时选择性的将模块文件夹拷贝到应用中使用。 模块举例: 比如后台库中有News(文章发布管理模块)、Products(产品管理模块)、Backup(数据库备份模块)、Job(应聘模块)等等若某网站的后台需要 用到News...
  • 【7】QeePHP的URL路由解析与生成

    blogdaren 2015-01-18   1614次来访
    路由功能,简单来说就是 URL 重写。 比如我们最初的地址是: http://qeephp.com/index.php?controller=projects&action=show&name=qeephp 经过优化后就是:http://qeephp.com/projects/qeephp 第二个地址相比第一个,不但更短,而且更有意义。也更容易被人记忆,当然对于搜索引...
  • 【8】【原创】QeePHP如何批量更新和删除记录?

    blogdaren 2015-01-06   1075次来访
    <?php /** * updateWhere 处理关联表,更安全,但是效率相对较低 */ Project::meta()->updateWhere(array('click'=>9),'[pid] =?',2); /** * updateDbWhere 第二个参数为sql条件字符窜,或者条件数组,不支持动态参数模式 */ Project::meta()->upda...
  • 【9】QeePHP查询对象QDB_Table_Select详解

    blogdaren 2015-01-06   1201次来访
    查询对象 QDB_Table_Select 查询对象用于从数据库查询符合条件的记录,并返回为数组或者 ActiveRecord 对象实例。 查询对象使用方法链来构造灵活的查询表达式,例如: $table = new QDB_Table(...); $rowset = $table->find(...) ->all(...) ...
  • 【10】【原创】QeePHP数据库查询的各种写法

    blogdaren 2015-01-06   1193次来访
    <?php // 使用字符串做查询条件 Post::find('id = 1') // 使用 ? 作为参数占位符 Post::find('id = ?', $id) // 使用多个参数占位符 Post::find('id = ? AND level_ix > ?', $id, $level_ix) // 使用数组提供多个参数占位符的值 Post::find('id = ? AND...
  • 【11】QeePHP使用ActiveRecord更好的封装业务逻辑

    blogdaren 2014-12-27   1198次来访
    通常的 ActiveRecord 实现,无非是封装一个数据库记录。然后把记录的字段变成对象属性而已。QeePHP 的 ActiveRecord 是很不同的,其属性不但可以是记录的字段,还可以映射到不同的方法。 举个最简单的例子:计算订单总金额 订单通常由多个订单项目组成,订单项目包含有商品的ID和购买价格。所以计算订单金额合计就是遍历订单项目,然后用订单项目的价格乘以数量,最后累加。 //传统代...
  • 【12】qeephp优化-7:修复group by 和 count()联合使用时分页异常的BUG

    blogdaren 2014-10-08   1601次来访
    找到/path/to/db/select.php文件的getPagination()方法或者是如下的setPager()方法 (注意: setPager()这个方法是博主扩展的,都需要同步修复),找到源代码: $count = (int)$this->_conn->execute($this->__toString())->fetchOne(); 然...
  • 【13】qeephp优化-6: 解决外部参数与 autofill优先级的问题

    blogdaren 2013-12-30   1074次来访
    目的: 外部参数的优先级高于autofill, 分以下情景: 1. 如果外部参数没有提供,autofill指定了参数,则autofill优先级最高 2. 如果提供了外部参数,无论autofill是否指定参数,外部参数优先级始终最高 代码: /path/to/qee_framework/library/orm/activerecord.php
  • 【14】qeephp优化-5: 解决地址中包含有index.php引起控制器方法找不到的BUG

    blogdaren 2013-10-29   943次来访
  • 【15】qeephp常用操作--博主总结

    blogdaren 2013-09-25   1376次来访
    每一个 AR(ActiveRecord 的简称)对象对应一条数据库记录 (1) 查询 read 每一个模型都提供了 find() 静态方法, 这个方法本质上并不查询数据,而是返回一个 QDB_Select 对象, 利用这个设计,我们可以采用连贯接口写出漂亮的查询代码: find() 方法的参数和 QDB_Select::where() 方法相同,支持下列参数格式: find(查询条件, 查询参数1...