-
源码详见:
https://github.com/linuxphp/qeephp
问题现象:
Model::find('title = ? and type = ?', array($title, $type))->asArray()->getOne();
对于形如这样的写法,框架不支持。
解决方法:
代码里有详细的案例注释,详见截图...
-
问题现象:
问题原因:
定位到底层代码: vi qee_framework/library/db/adapter/mysql.php +132
(1) mysql_real_escape_string函数是依赖数据库连接的以及连接使用的字符集的
(2) 然而底层在调用qstr()方法时,若采用直连...
-
QDB_ActiveRecord_Abstract 实现了一个扩展的 ActiveRecord 模式。
主要特征包括:
静态的查找 find() 和删除方法 delete(),避免在领域对象中混入基础架构代码
以表数据入口为基础的 CRUD 操作,具备丰富的功能
对象属性可以设置为只读模式,并且可以指定属性的读写方法
丰富的事件回调
可透...
-
QeePHP的数据库架 构为QeePHP应用程序提供了全方位的数据库服务:
主要组件概述
QeePHP 数据库架构包含的主要组件分为三个级别。
最底层的是适配器、事务等组件,提供直接操作数据库的能力,并且为更上层的组件提供服务;位于中
间层次的则是表数据入口。表数据入口封装了对数据表的操作,既可以处理单独的记录,也可以高效得完成批量数据处理;最高层的ActiveRecord实际
...
-
qeephp调用 save() 前一般模型都有主键值,这个时候回导致 save()
认为是要更新已有的对象,而不是创建新对象。
如果想创建新对象,解决办法是使用 save() 方法的第二个参数来强制创建新对象:
<?php
$user = new User();
$user->id = 1;
$user->name = ‘theone’;
$us...
-
问题背景:
模块有什么用呢?我想到的用途是,比如我公司要求后台的各个功能均模块化,一个文件夹代表一个功能。我们打算先做好一个模块库,然后在做网站时选择性的将模块文件夹拷贝到应用中使用。
模块举例:
比如后台库中有News(文章发布管理模块)、Products(产品管理模块)、Backup(数据库备份模块)、Job(应聘模块)等等若某网站的后台需要 用到News...
-
路由功能,简单来说就是 URL 重写。
比如我们最初的地址是: http://qeephp.com/index.php?controller=projects&action=show&name=qeephp
经过优化后就是:http://qeephp.com/projects/qeephp
第二个地址相比第一个,不但更短,而且更有意义。也更容易被人记忆,当然对于搜索引...
-
<?php
/**
* updateWhere 处理关联表,更安全,但是效率相对较低
*/
Project::meta()->updateWhere(array('click'=>9),'[pid] =?',2);
/**
* updateDbWhere 第二个参数为sql条件字符窜,或者条件数组,不支持动态参数模式
*/
Project::meta()->upda...
-
查询对象 QDB_Table_Select
查询对象用于从数据库查询符合条件的记录,并返回为数组或者 ActiveRecord 对象实例。
查询对象使用方法链来构造灵活的查询表达式,例如:
$table = new QDB_Table(...);
$rowset = $table->find(...)
->all(...)
...
-
<?php
// 使用字符串做查询条件
Post::find('id = 1')
// 使用 ? 作为参数占位符
Post::find('id = ?', $id)
// 使用多个参数占位符
Post::find('id = ? AND level_ix > ?', $id, $level_ix)
// 使用数组提供多个参数占位符的值
Post::find('id = ? AND...
-
通常的 ActiveRecord 实现,无非是封装一个数据库记录。然后把记录的字段变成对象属性而已。QeePHP 的 ActiveRecord 是很不同的,其属性不但可以是记录的字段,还可以映射到不同的方法。
举个最简单的例子:计算订单总金额
订单通常由多个订单项目组成,订单项目包含有商品的ID和购买价格。所以计算订单金额合计就是遍历订单项目,然后用订单项目的价格乘以数量,最后累加。
//传统代...
-
找到 /path/to/db/select.php 文件的getPagination()方法或者是如下的setPager()方法
(注意: setPager()这个方法是博主扩展的,都需要同步修复),找到源代码:
$count = (int)$this->_conn->execute($this->__toString())->fetchOne();
...
-
预期目标:
外部参数的优先级高于autofill, 分以下情景:
(1)如果外部参数没有提供,autofill指定了参数,则autofill优先级最高。
(2)如果提供了外部参数,无论autofill是否指定参数,外部参数优先级始终最高。
优化代码:
/path/to/qee_framework/library/orm/activerecord.php...
-
-
每一个 AR(ActiveRecord 的简称)对象对应一条数据库记录
(1) 查询 read
每一个模型都提供了 find() 静态方法, 这个方法本质上并不查询数据,而是返回一个 QDB_Select 对象, 利用这个设计,我们可以采用连贯接口写出漂亮的查询代码:
find() 方法的参数和 QDB_Select::where() 方法相同,支持下列参数格式:
find(查询条件, 查询参数1...
我就遇到了这个问题,终于找到解决办法...