当前位置: 首页 > 工具软件 > QeePHP3 > 使用案例 >

qeephp 的数据库查询

龙华翰
2023-12-01
不管一个框架的数据库功能有多么强大,也不可能涵盖数据库的全部功能(甚至常用的部分)。
比如带有表达式或 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。
 类似资料: