如果 Storage 采用 MySQL 作为存储驱动,则可以通过 ORM 实例调用 $this->builder() 获取 MySQLBuilder 类实例,从而可以调用其方法构造各种 SQL 语句。

以下示例中,均使用 $this 代表 ORM 类实例, 使用 $builder 代表 MySQLBuilder 对象。

新增

删除

更新

查询

构造 Select 字段

时间处理

构造 Where 条件

根据 ORM 类属性名获取对应的表字段名

可用于 where 查询时候通过类属性名而不是硬编码表字段,使得代码在表字段发生变化时无需做任何改动。

// 获取 ORM 属性 createdAt 对应的表字段名
$this->column('createdAt');

使用闭包处理复杂查询

嵌入原始 SQL 语句

计数

$builder-where($this->column('status', 1))->count();

分页

$page = 1;    // 分页数
$size = 10;   // 分页大小
$builder-where($this->column('status', 1))->paginate($page, $size);

返回一个 DOF\Util\Paginator 实例。

获取某个字段查询结果值列表

有时候我们可能只需要查询符合条件的记录中的某个字段值列表,那么可以这么用:

$builder-where($this->column('status', 1))->column('name');

返回符合查询条件的 name 字段值数组,比如:['foo', 'bar', 'xxx', 'yyy']

获取主键查询结果值列表

由于主键比较特殊,所以为其专门准备了一个方法来获取符合条件的主键列表:

$builder-where($this->column('status', 1))->ids();

返回符合查询条件的主键值数组,比如:[1, 3, 5, 7, 9]

获取最终 SQL 语句

所有构建增删改查 SQL 语句的方法,都可以通过 $builder->sql(true) 来设置最终返回的是构造出来的 SQL 语句字符串而不是执行真正的 SQL。

$builder-where($this->column('status'), 1)->sql(true)->count();

返回结果将类似于:select count(*) as total from user where status = 1

results matching ""

    No results matching ""