qeephp 的数据库查询

不管一个框架的数据库功能有多么强大,也不可能涵盖数据库的全部功能(甚至常用的部分)。
比如带有表达式或 OR 的查询条件,在现有的框架中并不好用。

例如 fleaphp 里面类似:
复制PHP内容到剪贴板
PHP代码:
$conditions =array(
    array(
'Field1','Value1','LIKE','OR'),
    array(
'Field2','Value2','=','OR'),
    array(
'Field3','Value3','>'),
);


其他框架的我就不举例了,大同小异。

可以看出上面的写法是“违背直觉”的。也就是说原本很简单的 SQL语法还得用另一个复杂的方式表达出来。而且如果是非常复杂的查询,只有放弃框架提供的数据库功能,采用手写 SQL 语句来完成。

对于这种现状,我认为是不可接受的。所以在 qeephp 中,允许按照书写 SQL 语句的方式来构造查询:
复制PHP内容到剪贴板
PHP代码:
// 使用字符串做查询条件
Post::find('id 1')

// 使用 作为参数占位符
Post::find('id ?'$id)

// 使用多个参数占位符
Post::find('id AND level_ix ?'$id$level_ix)

// 使用数组提供多个参数占位符的值
Post::find('id AND level_ix ?'array($id$level_ix))

// 使用命名参数
Post::find('id :id AND level_ix :level_ix'array('id' => $id'level_ix' => $level_ix))

// 使用名值对
Post::find(array('id' => $id'level_ix' => $level_ix));

// 使用 来转义字段名
Post::find('[id] 1');
Post::find('[posts.id] 1');

// 使用表达式
$expr new QDB_Expr('[hits] AVG([hits])');
Post::find($expr);

可以看出,QeePHP 为开发者提供直观的方式来构造数据库查询操作。
除了常见的查询条件,在 order、group、sum、min 等各种操作中,都可以使用上面的语法。

可以豪不谦虚的说,qeephp 提供了迄今为止所有 php 开发框架中最强大、最灵活、最直观的数据库操作接口。



// 统计符合条件的 Post 对象总数
list($count) = Post::find('tix > 1 AND 'name' LIKE?',"%{$name}")->count()->query();

// 分页查询
$select = Post::find()->limitPage($page_number,$page_size);
$pagination = $select->getPagination();

$posts = $select->query();

// 进行强制关联查询(将 Post 关联的评论查询出来)
$posts =Post::find()->query('comments');
反正组合运用,绝大部分查询操作都不需要手写sql。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值