digitalstars/simple-sql

生成SQL查询的库

v1.0.3 2024-03-29 18:55 UTC

This package is auto-updated.

Last update: 2024-09-18 12:59:37 UTC


README

连接

composer require digitalstars/simple-sql

概述

该库提供了一个方便的接口来构建SQL查询。

快速开始

以下是一个连接库和配置示例,这是开始工作所需的。所有示例都将省略这些初始化行。

require_once __DIR__ . "/lib/autoload.php";

use DigitalStars\SimpleSQL\Parser;

$pdo = new \PDO(DB_DSN, DB_LOGIN, DB_PASS);

Parser::setPDO($pdo);

目录

  • 主要组件
    • Parser - 用于查询后处理的类,用值填充类型化填充器。
      • setPDO - 设置用于准备查询参数的对象 PDO。
    • From - 表示查询中要操作的表的组件。
      • create - 初始化 From 对象的静态方法。
      • getFrom - 返回表名或 Select 对象。
      • setFrom - 设置表名或 Select 对象。
      • getAlias - 返回表别名。
      • setAlias - 设置表别名。
      • getSql - 返回生成的查询字符串。
      • getSqlRaw - 返回生成的查询字符串和填充器值。
    • Join - 表示查询中 JOIN 的组件。
      • create - 初始化 Join 对象的静态方法。
      • getLateral - 如果 JOIN 是 LATERAL,则返回 true。
      • setLateral - 将 JOIN 设置为 LATERAL。
      • setType - 设置 JOIN 类型。
      • getType - 返回 JOIN 类型。
      • setFrom - 设置查询的表。
      • getFrom - 返回在查询中设置的 From 对象。
      • setWhere - 设置 JOIN 的连接条件。
      • getWhere - 返回 JOIN 条件的对象。
      • getSql - 返回生成的查询字符串。
      • getSqlRaw - 返回生成的查询字符串和填充器值。
    • Where - 表示条件构建器的组件,可用于 WHERE 和 ON。
      • create - 初始化 Where 对象的静态方法。
      • isEmpty - 如果 Where 对象为空,则返回 true。
      • w_and - 通过 AND 添加条件到当前 Where 对象。
      • w_or - 通过 OR 添加条件到当前 Where 对象。
      • clear - 清除当前 Where 对象中的条件。
      • getSqlRaw - 返回生成的查询字符串和填充器值。
  • Select 查询 - SELECT 查询构建器。
    • create - 初始化 Select 对象的静态方法。
    • setSelect - 设置选择字段列表。
    • addSelectList - 向现有列表添加字段。
    • addSelect - 向选择列表添加字段。
    • getSelect - 返回选择字段列表。
    • setFrom - 设置查询的表。
    • getFrom - 设置查询的表。
    • getJoinList - 返回 JOIN 对象列表。
    • addJoin - 向 JOIN 列表中添加对象。
    • setJoin - 在 JOIN 列表中设置对象。
    • getWhere - 返回 WHERE 条件。
    • setWhere - 设置 WHERE 条件。
    • getGroupBy - 返回分组字段列表。
    • setGroupBy - 设置分组字段列表。
    • getHawing - 返回 HAVING 条件。
    • setHawing - 设置 HAVING 条件。
    • getOrderBy - 返回用于排序的字段列表。
    • setOrderBy - 设置用于排序的字段列表。
    • addOrderBy - 向已设置的排序字段列表末尾添加字段。
    • getLimit - 返回将要选择的总行数。
    • setLimit - 设置将要选择的行数。
    • getShareMode - 返回锁定模式。
    • setShareModeUpdate - 设置为 FOR UPDATE。
    • setShareModeShare - 设置为 FOR SHARE。
    • setShareModeDefault - 设置为默认锁定模式。
    • getSelectArray - 收集并返回包含所有选择字段的数组。
    • getSelectFeeds - 返回选择字段别名的数组。
    • getSql - 返回生成的查询字符串。
    • getSqlRaw - 返回生成的查询字符串和填充器值。
  • INSERT 查询 - INSERT 查询构造器。
    • create - 静态方法,初始化 Insert 对象。
    • setFields - 设置用于插入的字段列表。
    • addField - 向用于插入的字段列表添加字段。
    • getFields - 返回用于插入的字段列表。
    • setValues - 设置用于插入的值列表。
    • addValues - 向用于插入的值列表添加值。
    • getValues - 返回用于插入的值列表。
    • setFrom - 设置将要插入的表。
    • getFrom - 返回将要插入的表。
    • setIgnoreDuplicate - 在 INSERT 中设置 IGNORE。
    • getIgnoreDuplicate - 如果设置了 IGNORE,则返回 true。
    • setFieldsUpdateOnDuplicate - 设置在记录已存在时将更新的字段列表。
    • addFieldsUpdateOnDuplicate - 在记录已存在时添加将更新的字段。
    • getFieldsUpdateOnDuplicate - 返回在记录已存在时将更新的字段列表。
    • getSql - 返回生成的查询字符串。
    • getSqlRaw - 返回生成的查询字符串和填充器值。
  • UPDATE 查询 - UPDATE 查询构造器。
    • create - 静态方法,初始化 Update 对象。
    • setSet - 设置用于更新的字段列表。
    • addSet - 向用于更新的字段列表添加字段。
    • getSet - 返回用于更新的字段列表。
    • getSetSQLRaw 和占位符值。
    • getFrom - 返回将要更新的表。
    • setFrom - 设置将要更新的表。
    • getJoinList - 返回 JOIN 对象列表。
    • setJoin - 在 JOIN 列表中设置对象。
    • addJoin - 向 JOIN 列表中添加对象。
    • getWhere - 返回 WHERE 条件。
    • setWhere - 设置 WHERE 条件。
    • getLimit - 返回将要更新的行数。
    • setLimit - 设置将要更新的行数。
    • getSql - 返回生成的查询字符串。
    • getSqlRaw - 返回生成的查询字符串和填充器值。
  • DELETE 查询 - DELETE 查询构造器。
    • create - 静态方法,初始化 Delete 对象。
    • getFrom - 返回将要删除行的表。
    • setFrom - 设置将要删除行的表。
    • getWhere - 返回 WHERE 条件。
    • setWhere - 设置 WHERE 条件。
    • getLimit - 返回将要删除的行数。
    • setLimit - 设置将要删除的行数。
    • getSql - 返回生成的查询字符串。
    • getSqlRaw - 返回生成的查询字符串和填充器值。

主要组件

Parser

Parser 类是查询的后处理。它用值填充类型化的占位符。

static function setPDO(\PDO $pdo)

此方法设置用于准备查询参数的 PDO 对象。

注意! setPDO 方法必须在开始使用库之前调用。

From

From 组件对所有查询都是必需的。它表示查询中要操作的表构造器。

static create(string|Select $sql = null, string $alias = null): self

静态方法,初始化 From 对象。

参数

  1. $sql - 格式为 'table_name' 的表名字符串或直接带有别名的 'table_name tn',或作为子查询使用的 Select 对象。
  2. $alias - 表别名。

如果未指定别名,则将自动生成。

getFrom(): string|Select

返回表名或 Select 对象。

setFrom(string|Select $sql = null): self

设置表名或用作子查询的 Select 对象。

getAlias(): string

返回表别名。

setAlias(string $alias): self

设置表别名。

getSql(): string

返回已生成并替换所有占位符的查询字符串。

getSqlRaw(): array

此方法用于库内部交互。但可能对调试有用。

返回数组

  1. 'sql' => string - 生成的查询字符串,但未替换占位符。
  2. 'values' => array - 占位符的值数组。

Join

Join 组件代表查询中的 JOIN 构造。

static create(string $type = null, From|string $from = null, Where|string $where_or_lexema = null, $where_value = null): self

静态方法,初始化 Join 对象。

参数

  1. $type - JOIN 类型。可能的值:'INNER', 'LEFT', 'RIGHT'。
  2. $from - From 对象或表名字符串,格式为 'table_name' 或直接带有别名 'table_name tn'。
  3. $where_or_lexema - Where 对象或 JOIN 条件的字符串。
  4. $where_value - JOIN 条件中的占位符值。

还有用于初始化每个 JOIN 类型的静态方法。它们没有 $type 参数

  • static function inner(From|string $from, Where|string $where_or_lexema = null, $where_value = null): self - INNER JOIN
  • static function left(From|string $from, Where|string $where_or_lexema = null, $where_value = null): self - **LEFT JOIN **
  • static function right(From|string $from, Where|string $where_or_lexema = null, $where_value = null): self - RIGHT JOIN
  • static function innerLateral(From|string $from, Where|string $where_or_lexema = null, $where_value = null): self - * INNER JOIN LATERAL*
  • static function leftLateral(From|string $from, Where|string $where_or_lexema = null, $where_value = null): self - * LEFT JOIN LATERAL*
  • static function rightLateral(From|string $from, Where|string $where_or_lexema = null, $where_value = null): self - * RIGHT JOIN LATERAL*

getLateral(): bool

如果 JOIN 是 LATERAL,则返回 true。

setLateral(bool $is = true): self

设置 JOIN 为 LATERAL。

setType(string $type): self

设置 JOIN 类型。可能的值:'INNER', 'LEFT', 'RIGHT'。

getType(): string

返回 JOIN 类型。

setFrom(string|Select|From $from = null, string $alias = null): self

设置查询的表。

参数

  • $from - 表名(带别名或无别名),Select 对象(子查询)或已创建的 From 对象。
  • $alias - 表别名。(非必须)。如果未指定,则将自动生成。

getFrom(): From

返回已设置的 From 对象。

setWhere(Where $where): self

设置 JOIN 的 Where 对象。本质上这是 ON 条件。

getWhere(): Where

返回已设置的 Where 对象。

getSql(): string

返回已生成并替换所有占位符的查询字符串。

getSqlRaw(): array

此方法用于库内部交互。但可能对调试有用。

返回数组

  1. 'sql' => string - 生成的查询字符串,但未替换占位符。
  2. 'values' => array - 占位符的值数组。

Where

Where 组件代表条件构造器。它可以用于 WHERE 和 ON。

注意!Where 活跃地使用占位符,并支持 digitalstars/DataBase 中所有占位符。有关详细信息,请参阅库的文档 digitalstars/DataBase

static create(Where|string $lexema = null, array|string|int $value = null): self

静态方法,初始化 Where 对象。

参数

  1. $lexema - 条件字符串。可以是另一个 Where 对象或包含占位符的字符串。
  2. $value - 条件中占位符的值。如果需要传递多个值,则传递数组。如果需要传递数组作为单个值(例如 IN),则应将其包装在数组中。

isEmpty(): bool

如果 Where 对象为空,则返回 true。

w_and($lexema = null, $value = null): self

通过 AND 添加条件到当前 Where 对象。

w_or($lexema = null, $value = null): self

通过 OR 添加条件到当前 Where 对象。

clear(): self

清除当前 Where 对象的条件。

getSqlRaw(): ?array

此方法用于库内部交互。但可能对调试有用。

返回数组

  1. 'sql' => string - 生成的查询字符串,但未替换占位符。
  2. 'values' => array - 占位符的值数组。

SELECT 查询

类 Select 表示 SELECT 查询构造器。

static create(): self

静态方法,用于初始化 Select 对象。

setSelect(array $sql)

设置选择字段列表。接受字段数组,也可以接受关联数组,其中键是别名,值是表字段或函数。

addSelectList(array $sql)

与 setSelect 相同,但会将字段添加到已存在的字段中。

示例

传递字段数组

use DigitalStars\SimpleSQL\Select;
$select = Select::create()->setFrom('table_name tn'); // Устанавливаем таблицу в From

$select->setSelect(['id', 'name', 'age']);
SELECT tn.id   AS tn_id,
       tn.name AS tn_name,
       tn.age  AS tn_age
FROM table_name tn

传递包含部分别名的字段数组,部分为计算字段

$select->setSelect([
    'id',
    'name',
    'age_now' => 'tn.age',
    'age_plus_10' => 'tn.age + 10',
    'age_plus_20' => 'tn.age + 20'
]);
SELECT tn.id       AS tn_id,
       tn.name     AS tn_name,
       tn.age      AS age_now,
       tn.age + 10 AS age_plus_10,
       tn.age + 20 AS age_plus_20
FROM table_name tn

addSelect(string $field, string $alias = null): self

将字段添加到选择列表中。

  • $field - 字段名或表达式。
  • $alias - 字段别名。(非必需)

示例

use DigitalStars\SimpleSQL\Select;
$select = Select::create()->setFrom('table_name tn'); // Устанавливаем таблицу в From

$select->addSelect('id');
$select->addSelect('name');
$select->addSelect('age', 'age_now');
$select->addSelect('age + 10', 'age_plus_10');
$select->addSelect('age + 20', 'age_plus_20');
SELECT tn.id    AS tn_id,
       tn.name  AS tn_name,
       age      AS age_now,
       age + 10 AS age_plus_10,
       age + 20 AS age_plus_20
FROM table_name tn

getSelect(): array

返回选择字段列表。格式与 setSelect 传递的格式相同。

setFrom(string|Select|From $from = null, string $alias = null): self

设置查询的表。

参数

  • $from - 表名(带别名或无别名),Select 对象(子查询)或已创建的 From 对象。
  • $alias - 表别名。(非必须)。如果未指定,则将自动生成。

示例

示例 1

use DigitalStars\SimpleSQL\Select;
use DigitalStars\SimpleSQL\Components\From;
$select = Select::create()->setSelect(['id', 'name', 'age']);

$select->setFrom('table_name tn');
// Или
$select->setFrom('table_name tn', 'tn');
// Или
$from = From::create('table_name tn');
$select->setFrom($from);
// Или
$from = From::create('table_name', 'tn');
$select->setFrom($from);
// Или
$select->setFrom('table_name');
SELECT tn.id   AS tn_id,
       tn.name AS tn_name,
       tn.age  AS tn_age
FROM table_name tn 

示例 2

use DigitalStars\SimpleSQL\Select;

$select_sub = Select::create()
    ->setSelect(['id', 'name', 'age'])
    ->setFrom('table_name tn');

$select = Select::create()
    ->setSelect(['tn_name', 'tn_age'])
    ->setFrom($select_sub, 'sub');
SELECT sub.tn_name AS sub_tn_name,
       sub.tn_age  AS sub_tn_age
FROM (SELECT tn.id   AS tn_id,
             tn.name AS tn_name,
             tn.age  AS tn_age
      FROM table_name tn) sub

getFrom(): From

返回已设置的 From 对象。

getJoinList(): array

返回在查询中设置的 Join 对象列表。

addJoin(array|Join $join): self

将 Join 对象(或对象数组)添加到 JOIN 列表中。

setJoin(array|Join $join = null): self

设置 Join 对象(或对象数组)到 JOIN 列表中。

JOIN 示例使用

示例 1

use DigitalStars\SimpleSQL\Components\Join;

$select = Select::create()
    ->setSelect(['name', 'age', 't2.other_info', 't3.other_info'])
    ->setFrom('table_name_one', 'tno')
    ->addJoin(Join::inner('table_name_two t2', 'tno.id = t2.id'))
    ->addJoin(Join::left('table_name_three t3', 'tno.id = t3.id'));
SELECT tno.name      AS tno_name,
       tno.age       AS tno_age,
       t2.other_info AS t2_other_info,
       t3.other_info AS t3_other_info
FROM table_name_one tno
         INNER JOIN table_name_two t2 on (tno.id = t2.id)
         LEFT JOIN table_name_three t3 on (tno.id = t3.id)

示例 2(含子查询)

$select1 = Select::create()
    ->setSelect(['id', 'name', 'age', 't2.other_info', 't3.other_info'])
    ->setFrom('table_name_one', 'tno')
    ->addJoin(Join::inner('table_name_two t2', 'tno.id = t2.id'))
    ->addJoin(Join::left('table_name_three t3', 'tno.id = t3.id'));

$select = Select::create()
    ->setSelect(["t.id", "inf.tno_name", 'sum' => 'inf.t2_other_info + IFNULL(inf.t3_other_info, 0)'])
    ->setFrom('main_table', 't')
    ->addJoin(Join::inner(From::create($select1, 'inf'), 'inf.tno_id = t.id'));
SELECT t.id                                             AS t_id,
       inf.tno_name                                     AS inf_tno_name,
       inf.t2_other_info + IFNULL(inf.t3_other_info, 0) AS sum
FROM main_table t
         INNER JOIN (SELECT tno.id        AS tno_id,
                            tno.name      AS tno_name,
                            tno.age       AS tno_age,
                            t2.other_info AS t2_other_info,
                            t3.other_info AS t3_other_info
                     FROM table_name_one tno
                              INNER JOIN table_name_two t2 on (tno.id = t2.id)
                              LEFT JOIN table_name_three t3 on (tno.id = t3.id)) inf on (inf.tno_id = t.id)

getWhere(): Where

返回已设置的 Where 对象。

setWhere(Where $where = null): self

在查询中设置 Where 对象。

示例

use DigitalStars\SimpleSQL\Select;
use DigitalStars\SimpleSQL\Components\Where;

$select = Select::create()
    ->setSelect(['id', 'name', 'age'])
    ->setFrom('table_name tn')
    ->setWhere(Where::create('age > ?i', 18)->w_and('name = ?s', 'John'));
SELECT tn.id   AS tn_id,
       tn.name AS tn_name,
       tn.age  AS tn_age
FROM table_name tn
WHERE (age > 18 AND name = 'John')

getGroupBy(): array

返回分组字段列表。

setGroupBy(array $group_by = null): self

设置分组字段列表。接受别名或字段数组(与 setSelect 相同)。

示例

use DigitalStars\SimpleSQL\Select;

$select = Select::create()
    ->setSelect(['name', 'age', 'sum_salary' => 'SUM(salary)'])
    ->setFrom('table_name tn')
    ->setGroupBy(['name', 'age']);
SELECT tn.name     AS tn_name,
       tn.age      AS tn_age,
       SUM(salary) AS sum_salary
FROM table_name tn
GROUP BY tn.name, tn.age

getHawing(): Where

返回已设置的 Where 对象。

setHawing(Where $hawing = null): self

在查询中设置 Where 对象。

示例

use DigitalStars\SimpleSQL\Select;
use DigitalStars\SimpleSQL\Components\Where;

$select = Select::create()
    ->setSelect(['name', 'age', 'sum_salary' => 'SUM(salary)'])
    ->setFrom('table_name tn')
    ->setGroupBy(['name', 'age'])
    ->setHawing(Where::create('sum_salary > ?i', 1000));
SELECT tn.name     AS tn_name,
       tn.age      AS tn_age,
       SUM(salary) AS sum_salary
FROM table_name tn
GROUP BY tn.name, tn.age
HAVING (sum_salary > 1000)

getOrderBy(): array

返回排序字段列表,格式与 setOrderBy 设置的格式相同。

setOrderBy(array $order_by = null): self

设置排序字段列表。键是字段,值是排序方向。

示例

use DigitalStars\SimpleSQL\Select;

$select = Select::create()
    ->setSelect(['name', 'age', 'sum_salary' => 'SUM(salary)'])
    ->setFrom('table_name tn')
    ->setGroupBy(['name', 'age'])
    ->setOrderBy(['name' => 'ASC', 'age' => 'DESC']);
SELECT tn.name     AS tn_name,
       tn.age      AS tn_age,
       SUM(salary) AS sum_salary
FROM table_name tn
GROUP BY tn.name, tn.age
ORDER BY tn.name ASC, tn.age DESC

addOrderBy(array $order_by): self

将排序字段添加到已设置的排序字段列表末尾。如果有重复键,则不会覆盖。

getLimit(): ?int

返回要选择行数。如果没有设置,则返回 null。

setLimit(?int $limit = null): self

设置要选择的行数。

getShareMode(): ?string

返回锁定模式。如果没有设置,则返回 null。

setShareModeUpdate(): self

设置 FOR UPDATE 锁定模式。

setShareModeShare(): self

设置 FOR SHARE 锁定模式。

setShareModeDefault(): self

设置默认锁定模式。

getSelectArray(): array

收集并返回一个包含所有选择字段的数组,格式与查询中使用相同。

键是字段别名,值是字段或表达式。

getSelectFeels(): array

返回选择字段别名的数组。

getSql(): string

返回已生成并替换所有占位符的查询字符串。

getSqlRaw(): array

此方法用于库内部交互。但可能对调试有用。

返回数组

  1. 'sql' => string - 生成的查询字符串,但未替换占位符。
  2. 'values' => array - 占位符的值数组。

INSERT 查询

类 Insert 表示 INSERT 查询构造器。

static create(): self

静态方法,用于初始化 Insert 对象。

setFields(array $sql = []): self

设置插入字段列表。接受关联数组,其中键是字段,值是占位符(或插入值)。

addField(string $field, string|int|float $placeholder_or_raw_value = null): self

将字段添加到插入字段列表中。

参数

  • $field - 字段名。
  • $placeholder_or_raw_value - 占位符(或插入值)。

getFields(): array

返回插入字段列表。(与 setFields 方法设置的格式相同)

setValues(array|Select $values = []): self

设置插入值列表。接受值数组或 Select 对象(如果需要从 Select 查询结果插入值)。

注意!数组中的每个元素都是所有字段值的数组,对应每个占位符

addValues(array $values = []): self

添加插入值。

getValues(): array|Select

返回用于插入(或Select对象)的值列表。与使用setValues方法设置时的格式相同。

setFrom(string|Select|From $from = null, string $alias = null): self

设置将进行插入的表。

getFrom(): From

返回已设置的 From 对象。

setIgnoreDuplicate(bool $is_ignore_duplicate = true): self

设置INSERT中的IGNORE标志。

getIgnoreDuplicate(): bool

如果设置了IGNORE标志,则返回true。

setFieldsUpdateOnDuplicate(array $fields = []): self

设置在记录已存在时将更新的字段列表。

addFieldsUpdateOnDuplicate(array|string $fields): self

在记录已存在时添加将更新的字段。

getFieldsUpdateOnDuplicate(): array

如果记录已存在,则返回将更新的字段列表。

getSql(): string

返回已生成并替换所有占位符的查询字符串。

getSqlRaw(): array

此方法用于库内部交互。但可能对调试有用。

返回数组

  1. 'sql' => string - 生成的查询字符串,但未替换占位符。
  2. 'values' => array - 占位符的值数组。

使用示例

示例 1

use DigitalStars\SimpleSQL\Insert;

$insert = Insert::create()
    ->setFields(['name' => '?s', 'age' => '?i'])
    ->addValues(['John', 25])
    ->addValues(['Mike', 30])
    ->setFrom('table_name')
    ->setFieldsUpdateOnDuplicate(['age']);

// Или

$insert = Insert::create()
    ->setFields(['name' => '?s', 'age' => '?i'])
    ->setValues([['John', 25], ['Mike', 30]])
    ->setFrom('table_name')
    ->setFieldsUpdateOnDuplicate(['age']);
INSERT INTO table_name (name, age)
VALUES ('John', 25),
       ('Mike', 30)
    ON DUPLICATE KEY UPDATE age = VALUES(age)

示例2(Select查询的值)

use DigitalStars\SimpleSQL\Insert;
use DigitalStars\SimpleSQL\Select;

$select = Select::create()
    ->setSelect(['name', 'age'])
    ->setFrom('table_name_2');

$insert = Insert::create()
    ->setFields(['name' => '?s', 'age' => '?i'])
    ->setValues($select)
    ->setFrom('table_name')
    ->setIgnoreDuplicate();
INSERT IGNORE INTO table_name (name, age)
SELECT tn2.name AS tn2_name, tn2.age AS tn2_age
FROM table_name_2 tn2

UPDATE查询

Update类代表UPDATE查询构建器。

static create(): self

静态方法,初始化Update对象。

setSet(array $sql = [], array $values = []): self

设置要更新的字段及其值列表。

参数

  • $sql - 关联数组,其中键是字段,值是占位符(或无需验证的插入值)。
  • $values - 将插入占位符的值数组。

addSet(string $field, string|int|float $placeholder_or_raw_value = null, $value = null): self

添加要更新的字段及其值。

参数

  • $field - 字段名。
  • $placeholder_or_raw_value - 占位符(或无需验证的插入值)。
  • $value - 占位符的值。

getSet(): array

返回要更新的字段及其值列表。

返回关联数组,其中键是字段,值是下一个数组

  • field - 字段名。
  • placeholder - 占位符(或无需验证的插入值)。
  • value - 占位符的值。

getSetSQLRaw(): array

返回用于更新的数据。用于库内部交互。但可能对调试有帮助。

返回数组

  1. 'sql' => 生成的SQL查询,但未将占位符替换为值。
  2. 'values' => 占位符的值数组。

getFrom(): From

返回已设置的 From 对象。

setFrom(string|Select|From $from = null, string $alias = null): self

设置将进行更新的表。

getJoinList(): array

返回查询中设置的Join对象列表。(与Select类似)

setJoin(array|Join $join = null): self

设置Join对象(或对象数组),在JOIN列表中。(与Select类似)

addJoin(array|Join $join): self

添加Join对象(或对象数组),在JOIN列表中。(与Select类似)

getWhere(): Where

返回查询中设置的Where对象。(负责WHERE条件)

setWhere(Where $where = null): self

设置查询中的Where对象。(负责WHERE条件)

getLimit(): ?int

返回将更新的行数。如果未设置,则返回null。

setLimit(?int $limit = null): self

设置将更新的行数。

getSql(): string

返回已生成并替换所有占位符的查询字符串。

getSqlRaw(): array

此方法用于库内部交互。但可能对调试有用。

返回数组

  1. 'sql' => string - 生成的查询字符串,但未替换占位符。
  2. 'values' => array - 占位符的值数组。

使用示例

示例 1

use DigitalStars\SimpleSQL\Update;

$update = Update::create()
    ->setSet(['name' => '?s', 'age' => '?i'], ['John', 25])
    ->setFrom('table_name')
    ->setWhere(Where::create('tn.id = ?i', 1));

// Или

$update = Update::create()
    ->addSet('name', '?s', 'John')
    ->addSet('age', '?i', 25)
    ->setFrom('table_name')
    ->setWhere(Where::create('tn.id = ?i', 1));
UPDATE table_name tn
SET tn.name = 'John',
    tn.age  = 25
WHERE (tn.id = 1)

示例 2

use DigitalStars\SimpleSQL\Update;
use DigitalStars\SimpleSQL\Select;

$select = Select::create()
    ->setSelect(['name', 'age', 'id'])
    ->setFrom('table_name_2');

$update = Update::create()
    ->setSet(['name' => '?s', 'age' => '?i'], ['John', 25])
    ->setFrom('table_name')
    ->setWhere(Where::create('tn.id = ?i', 1))
    ->setJoin(Join::inner(From::create($select, 'tn2'), 'tn2.tn2_id = tn.id'));
UPDATE table_name tn
    INNER JOIN (SELECT tn2.name AS tn2_name,
                       tn2.age  AS tn2_age,
                       tn2.id   AS tn2_id
                FROM table_name_2 tn2) tn2 on (tn2.tn2_id = tn.id)
SET tn.name = 'John',
    tn.age  = 25
WHERE (tn.id = 1)

DELETE查询

Delete类代表DELETE查询构建器。

static create(): self

静态方法,初始化Delete对象。

setFrom(string|Select|From $from = null, string $alias = null): self

设置将从中删除的表。

getFrom(): From

返回已设置的 From 对象。

getWhere(): Where

返回查询中设置的Where对象。(负责WHERE条件)

setWhere(Where $where = null): self

设置查询中的Where对象。(负责WHERE条件)

getLimit(): ?int

返回将删除的行数。如果未设置,则返回null。

setLimit(?int $limit = null): self

设置将删除的行数。如果未设置,则删除所有行。

getSql(): string

返回已生成并替换所有占位符的查询字符串。

getSqlRaw(): array

此方法用于库内部交互。但可能对调试有用。

返回数组

  1. 'sql' => string - 生成的查询字符串,但未替换占位符。
  2. 'values' => array - 占位符的值数组。

使用示例

示例 1

use DigitalStars\SimpleSQL\Delete;

$delete = Delete::create()
    ->setFrom('table_name')
    ->setWhere(Where::create('id = ?i', 1))
    ->setLimit(1);
DELETE FROM `table_name` WHERE (id = 1) LIMIT 1