Azalea\MysqlSqlBuilder

MysqlModel Mysql 数据库服务模块类 > MysqlSqlBuilder

⚠️ MysqlSqlBuilder 构造函数已私有,无法通过 new 方式实例化,仅通过 MysqlModelgetSqlBuilder 方法获得

$query = $mysqlModel->getSqlBuilder()
      ->select('*')
      ->from('users u')
      ->join('users_info ui', 'uid')
      ->where('status', true)
      ->whereGroupStart()
        ->where('username LIKE', 'bodao%')
        ->orWhere('username LIKE', 'ymb%')
      ->whereGroupEnd()
      ->groupBy('role')
      ->orderBy('username DESC');
// SQL
//   SELECT * 
//   FROM `users` AS `u` 
//   INNER JOIN `users_info` AS `ui` USING (uid) 
//   WHERE `status` = "1" AND 
//     ( `username` LIKE "bodao%" OR `username` LIKE "ymb%" ) 
//   GROUP BY role 
//   ORDER BY username DESC

MysqlSqlBuilder::select


设置 SELECT

MysqlSqlBuilder MysqlSqlBuilder::select ( string $select [, bool $escape = true] )
  • 参数
    $select - SELECT 字段列表,若有多个字段,用 , 分隔
    $escape - 是否 SQL 转义,默认 true

  • 返回值
    当前 MysqlSqlBuilder 对象

  • 范例

$query->select('foo, bar');
$query->select('FROM_UNIXTIME(`created`)', false);

MysqlSqlBuilder::distinct


设置 DISTINCT

MysqlSqlBuilder MysqlSqlBuilder::distinct ( [bool $distinct = true] )
  • 参数
    $distinct - 是否设置 DISTINCT,默认 true

  • 返回值
    当前 MysqlSqlBuilder 对象

  • 范例

$query->distinct();

MysqlSqlBuilder::from


设置 FROM

MysqlSqlBuilder MysqlSqlBuilder::from ( mixed $from)
  • 参数
    $from - 表名,若为字符串,则为表名;若为数组,则数组键为别名,值为表名

  • 返回值
    当前 MysqlSqlBuilder 对象

  • 范例

$query->from('table');  // FROM `table`
$query->from('table t');  // FROM `table` AS `t`
$query->from([ 'u' => 'user' ]);  // FROM `user` AS `u`

MysqlSqlBuilder::join


设置 JOIN

MysqlSqlBuilder MysqlSqlBuilder::join ( mixed $join, string $condition [, $type = 'INNER'] )
  • 参数
    $join - 表名,若为字符串,则为表名;若为数组,则数组键为别名,值为表名
    $condition - 连接条件
    $type - 连接方式,默认 INNER 内连,可选 LEFT 左连, RIGHT 右连

  • 返回值
    当前 MysqlSqlBuilder 对象

  • 范例

$query->join('table', 'id');  // INNER JOIN `table` USING(id)
$query->join('table t', 'a.id = t.id');  // INNER JOIN `table` AS `t` ON a.id = t.id
$query->join([ 'u' => 'user' ], 'uid', 'left');  // LEFT JOIN `user` AS u USING(uid)

MysqlSqlBuilder::where

MysqlSqlBuilder::orWhere


设置 WHERE

MysqlSqlBuilder MysqlSqlBuilder::where ( mixed $condition [, mixed $value = null [, $escape = true]] )
MysqlSqlBuilder MysqlSqlBuilder::orWhere ( mixed $condition [, mixed $value = null [, $escape = true]] )
  • 参数
    $condition - 条件,若为字符串表示查询字段;若为数组,则数组键表示数组,值表示查询值。条件可包含比较运算符
    $value - 若 $condition 为字符串,该参数表示查询值;若 $condition 为数组,该参数被忽略,默认为空
    $escape - 是否 SQL 转义,默认为 true
比较运算符 描述
= 相等,默认值
<=> NULL安全相等,查看手册
!= <> 不相等
> 大于
>= 大于等于
< 小于
<= 小于等于
IS 布尔型判断真
IS NOT 布尔型判断假
IN 包含
NOT IN 不包含
LIKE 字符串相似,查看手册
NOT LIKE 字符串不相似
  • 返回值
    当前 MysqlSqlBuilder 对象

  • 范例

$query->where('foo', 'bar');
$query->where([ 'foo IN' => [1, 2, 3]]);
$query->orWhere('`created` >', 'UNIX_TIMESTAMP() - 1800', false);

MysqlSqlBuilder::whereGroupStart

MysqlSqlBuilder::orWhereGroupStart

MysqlSqlBuilder::notWhereGroupStart

MysqlSqlBuilder::orNotWhereGroupStart


设置 WHERE 嵌套

MysqlSqlBuilder MysqlSqlBuilder::whereGroupStart ( void )
MysqlSqlBuilder MysqlSqlBuilder::orWhereGroupStart ( void )
MysqlSqlBuilder MysqlSqlBuilder::notWhereGroupStart ( void )
MysqlSqlBuilder MysqlSqlBuilder::orNotWhereGroupStart ( void )
  • 参数

  • 返回值
    当前 MysqlSqlBuilder 对象

  • 范例

$query->whereGroupStart();

MysqlSqlBuilder::whereGroupEnd


关闭 WHERE 嵌套

MysqlSqlBuilder MysqlSqlBuilder::whereGroupEnd ( void )
  • 参数

  • 返回值
    当前 MysqlSqlBuilder 对象

  • 范例

$query->whereGroupEnd();

MysqlSqlBuilder::having

MysqlSqlBuilder::orHaving


设置 HAVING

MysqlSqlBuilder MysqlSqlBuilder::having ( mixed $condition [, mixed $value = null [, $escape = true]] )
MysqlSqlBuilder MysqlSqlBuilder::v ( mixed $condition [, mixed $value = null [, $escape = true]] )
  • 参数
    $condition - 条件,若为字符串表示查询字段;若为数组,则数组键表示数组,值表示查询值。条件可包含比较运算符,参考 where 方法
    $value - 若 $condition 为字符串,该参数表示查询值;若 $condition 为数组,该参数被忽略,默认为空
    $escape - 是否 SQL 转义,默认为 true

  • 返回值
    当前 MysqlSqlBuilder 对象

  • 范例

$query->having('foo', 'bar');
$query->having([ 'foo IN' => [1, 2, 3]]);
$query->orHaving('`created` >', 'UNIX_TIMESTAMP() - 1800', false);

MysqlSqlBuilder::limit


设置 LIMIT

MysqlSqlBuilder MysqlSqlBuilder::limit ( int $limit [, int $offset = 0] )
  • 参数
    $limit - 结果集行数
    $offset - 起始行,默认 0

  • 返回值
    当前 MysqlSqlBuilder 对象

  • 范例

$query->limit(100, 50);

MysqlSqlBuilder::limitPage


设置 LIMIT,根据页码

MysqlSqlBuilder MysqlSqlBuilder::limitPage ( int $limit [, int $page = 1] )
  • 参数
    $limit - 结果集行数
    $page - 页码,默认 1

  • 返回值
    当前 MysqlSqlBuilder 对象

  • 范例

$query->page(100, 2);

MysqlSqlBuilder::orderBy


设置 ORDER BY

MysqlSqlBuilder MysqlSqlBuilder::orderBy ( mixed $orderby [, bool $escape = true] )
  • 参数
    $orderby - ORDER BY 字段列表,若有多个字段,用 , 分隔
    $escape - 是否 SQL 转义,默认 true

  • 返回值
    当前 MysqlSqlBuilder 对象

  • 范例

$query->orderBy('created');
$query->orderBy([ 'foo', 'bar DESC' ]);
$query->orderBy('`foo` - `bar`', false);

MysqlSqlBuilder::groupBy


设置 GROUP BY

MysqlSqlBuilder MysqlSqlBuilder::groupBy ( mixed $groupby [, bool $escape = true] )
  • 参数
    $groupby - GROUP BY 字段列表,若有多个字段,用 , 分隔
    $escape - 是否 SQL 转义,默认 true

  • 返回值
    当前 MysqlSqlBuilder 对象

  • 范例

$query->groupBy('created');
$query->groupBy([ 'foo', 'bar DESC' ]);
$query->groupBy('`foo` - `bar`', false);

MysqlSqlBuilder::getSql


构建 SQL 语句

string MysqlSqlBuilder::getSql ( void )
  • 参数

  • 返回值
    SQL 语句

  • 范例

$sql = $query->getSql();

MysqlSqlBuilder::query


构建 SQL 并执行

MysqlResult MysqlSqlBuilder::query ( [bool $throwsException = true] )
  • 参数
    $throwsException - 是否抛出异常,默认为 true

  • 返回值
    查询结果对象

  • 范例

$result = $query->query();

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 121,073评论 16 134
  • //Clojure入门教程: Clojure – Functional Programming for the J...
    葡萄喃喃呓语阅读 2,415评论 0 7
  • 毕业论文写作倒计时,工作暂停,给准备和写作论文预留了一个多月时间,我却迟迟难以动笔。 可悲呀! 根本原因是我难以改...
    宋文博阅读 81评论 0 0
  • 今日立秋,时辰约摸就在今晚子夜时分,可被这个炎热夏季撩拨地无限焦躁的心,却早就等不迭了。这不,今天一大清早...
    欢乐V英雄阅读 80评论 0 1
  • 最近在陪伴一个宝宝,教她中文。三岁,可爱漂亮。一段时间下来,发生了很多有趣的事。今天早上过去,上课之前,小家伙自己...
    Cici清清阅读 51评论 0 0