digitalstars / simple-sql
生成SQL查询的库
Requires
- php: >=8.0
- ext-json: *
- ext-mbstring: *
- ext-pdo: *
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
- 返回生成的查询字符串和填充器值。
- Parser - 用于查询后处理的类,用值填充类型化填充器。
- 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 对象。
参数
- $sql - 格式为 'table_name' 的表名字符串或直接带有别名的 'table_name tn',或作为子查询使用的 Select 对象。
- $alias - 表别名。
如果未指定别名,则将自动生成。
getFrom(): string|Select
返回表名或 Select 对象。
setFrom(string|Select $sql = null): self
设置表名或用作子查询的 Select 对象。
getAlias(): string
返回表别名。
setAlias(string $alias): self
设置表别名。
getSql(): string
返回已生成并替换所有占位符的查询字符串。
getSqlRaw(): array
此方法用于库内部交互。但可能对调试有用。
返回数组
- 'sql' => string - 生成的查询字符串,但未替换占位符。
- '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 对象。
参数
- $type - JOIN 类型。可能的值:'INNER', 'LEFT', 'RIGHT'。
- $from - From 对象或表名字符串,格式为 'table_name' 或直接带有别名 'table_name tn'。
- $where_or_lexema - Where 对象或 JOIN 条件的字符串。
- $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
此方法用于库内部交互。但可能对调试有用。
返回数组
- 'sql' => string - 生成的查询字符串,但未替换占位符。
- 'values' => array - 占位符的值数组。
Where
Where 组件代表条件构造器。它可以用于 WHERE 和 ON。
注意!Where 活跃地使用占位符,并支持 digitalstars/DataBase 中所有占位符。有关详细信息,请参阅库的文档 digitalstars/DataBase。
static create(Where|string $lexema = null, array|string|int $value = null): self
静态方法,初始化 Where 对象。
参数
- $lexema - 条件字符串。可以是另一个 Where 对象或包含占位符的字符串。
- $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
此方法用于库内部交互。但可能对调试有用。
返回数组
- 'sql' => string - 生成的查询字符串,但未替换占位符。
- '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
此方法用于库内部交互。但可能对调试有用。
返回数组
- 'sql' => string - 生成的查询字符串,但未替换占位符。
- '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
此方法用于库内部交互。但可能对调试有用。
返回数组
- 'sql' => string - 生成的查询字符串,但未替换占位符。
- '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
返回用于更新的数据。用于库内部交互。但可能对调试有帮助。
返回数组
- 'sql' => 生成的SQL查询,但未将占位符替换为值。
- '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
此方法用于库内部交互。但可能对调试有用。
返回数组
- 'sql' => string - 生成的查询字符串,但未替换占位符。
- '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
此方法用于库内部交互。但可能对调试有用。
返回数组
- 'sql' => string - 生成的查询字符串,但未替换占位符。
- '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