scaleplan/sql-templater

此包的最新版本(1.0.0)没有可用的许可信息。

PostgreSQL的查询模板器

1.0.0 2019-12-30 09:02 UTC

This package is auto-updated.

Last update: 2024-09-16 19:23:50 UTC


README

SQL模板辅助类。

安装

composer require scaleplan/sql-templater


描述

包含几个预定义的指令,可以包含在SQL查询中以简化操作

  • ####[fields]

在SQL查询的这一部分插入输入的数据键字符串,例如,如果我们有一个查询

INSERT INTO
  user
 ([fields])
VALUES 
  ...

和数据

$data = [
    'name' = > 'Ivan'
    'surname' = > 'Fuckov'
];

经过处理后,请求将采取以下形式

INSERT INTO
  user
 (name, 
  surname)
VALUES 
  ...

如果我们不知道确切的数据集将到达入口,这将很有用。

  • [fields:not(...)]

操作类似于 [fields] + 在 : not(...) (而不是点)中可以指定非包含字段的逗号分隔列表,例如

INSERT INTO
  user
 ([fields:not (sur)])
VALUES 
  ...

转换为

INSERT INTO
  user
 (name)
VALUES 
  ...

使用相同的数据。

  • ####[expression]

类似于 [fields],仅填充查询的另一部分,例如

请求

INSERT INTO
  user
 ([fields])
VALUES 
  [expression]

和数据

$data = [
    'name' = > 'Ivan'
    'surname' = > 'Fuckov'
];

结果将是

INSERT INTO
  user
 (name, 
    surname)
VALUES 
 (:name,
  : surname)

如果输入有多个行

$data = [
    [
        'name' = > 'Ivan'
        'surname' = > 'Fuckov'
    ],
    [
        'name' = > 'Vasiliy'
        'surname' = > 'Chekhov'
    ]
];

结果将是

INSERT INTO
  user
 (name, 
  surname)
VALUES 
 (: name0,
  : surname0),
 (: name1,
   : surname1)

数据看起来像

$data = [
    'name0' = > 'Ivan'
    'surname0' = > 'Fuckov'
    'name1' = > 'Vasiliy'
    'surname1' = > 'Chekhov'
];
  • [expression:not(...)]

我认为这里一切都清楚 - 占位符的替换 - 除了那些在 not(...) 中的以外


应该注意的是,如果参数值中包含数组,它也可以正确处理

请求

INSERT INTO
  user
 ([fields])
VALUES 
  [expression]

特征

$data = [
    'name' = > 'Ivan'
    'surname' = > 'Fuckov',
    'phone_numbers' => [
        '+7905555555',
        '+7904444444'
    ]
];

结果

INSERT INTO
  user
 (name, 
  surname)
VALUES 
 (:name,
  : surname,
  ARRAY [: phone_numbers0, phone_numbers1])

可以通过传递模板参数 $convertArrays 并将值设置为 false 来禁用此转换。


此外,还可以使用查询的可选部分,这些部分仅在它们中使用了参数时使用,例如

SELECT
  *
FROM
  user
[WHERE 
  group =: group]

如果数据已传输

$data = [
    'group' = > 'admins'
];

则生成的查询将是

SELECT
  *
FROM
  user
WHERE 
  group =: group

如果传递了 group 参数,则条件将完全删除,查询将返回所有用户。


类文档