连贯操作

ORM提供的链式操作方法,可以有效的提高数据存取的代码清晰度和开发效率。

where

你可以使用 where 方法。调用 where 最基本的方式是需要传递一个参数

这个参数可以传递多种不同表现:

主键

  1. // 主键
  2. $user = UserListModel::create()->where(1)->get();
  3. // 多个主键
  4. $user = UserListModel::create()->where([1,2,3])->all();

数组

  1. // [字段名=> 字段值]数组方式
  2. $user = UserListModel::create()->where(['state' => 1])->get();
  3. // 复杂条件数组
  4. $user = UserListModel::create()->where([
  5. 'age' => [[18,23], 'between'],
  6. 'name' => ['siam', 'like', 'or'],
  7. ])

原生sql

  1. $user = UserListModel::create()->where("sql 语句 需要自己注意注入风险")->get();

其他Mysqli链式操作里的where传参

ORM where 操作也可以实现 EasySwoole\Mysqli\QueryBuilder 中的 where 操作

更多操作还可以查阅Mysqli链式操作里的where章节

  1. // 走builder原生的where
  2. $getCoherent5 = UserListModel::create()->where('id', 1, '=')->get();
  3. $getCoherent6 = UserListModel::create()->where('id', 1, '!=')->get();
  4. $getCoherent6 = UserListModel::create()->where('id', 1, 'like')->get();

alias

alias用于设置当前数据表的别名

  1. $res = TestUserListModel::create()->alias('siam')->where(['siam.name' => 'test'])->all();

group

group 方法可以将结果分组。

  1. $group = TestUserListModel::create()->field('sum(age) as age, `name`')->group('name')->all(null);

order

order 方法可用于将原生字符串设置为 order by 子句的值:

  1. $order = TestUserListModel::create()->order('id', 'DESC')->get();

join

join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。

  • INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行
  1. object join ( mixed $joinTable , string $joinCondition = null [, string $type = 'INNER'] )

$joinTable 要关联的(完整)表名以及别名 $joinCondition 关联条件. $type 关联类型。可以为:’LEFT’, ‘RIGHT’, ‘OUTER’, ‘INNER’, ‘LEFT OUTER’, ‘RIGHT OUTER’, ‘NATURAL’,不区分大小写,默认为INNER(数据库软件 默认)。

  1. $join = TestUserListModel::create()->join('table2','table2.col1 = user_list.col2')->get();
  2. $join2 = TestUserListModel::create()->alias('list')->join('table2 as t2','t2.col1 = list.col2')->get();