jeidison/named-query

该软件包已废弃且不再维护。未建议替代软件包。

存储SQL的软件包

0.8.0 2021-09-13 20:16 UTC

This package is auto-updated.

Last update: 2023-11-14 01:27:46 UTC


README

Build Status

安装

通过Composer安装

$ composer require jeidison/named-query

发布配置

$ php artisan vendor:publish --provider="Jeidison\NamedQuery\Providers\NamedQueryServiceProvider"

此命令将发布软件包的 config/named-query.php 配置,以便进行自定义。

return [
    'path-sql'  => database_path('named-query/queries'),
    'type'      => Jeidison\NamedQuery\Enums\TypeFile::XML,
    'type-bind' => Jeidison\NamedQuery\Enums\TypeBind::TWO_POINTS,
];

在XML文件中添加SQL

<query name="find_tab1">
    SELECT * FROM TAB1 WHERE PAR1 = ?1
</query>

在PHP文件中添加SQL

CONST find_tab1 = "
SELECT * FROM TAB1 WHERE PAR1 = :PAR1
";

注意

  • 如果您将文件类型配置为 config/named-query.php 中的 Jeidison\NamedQuery\Enums\TypeFile::XML,则所有SQL必须存储在XML文件中。
  • 如果您将文件类型配置为 config/named-query.php 中的 Jeidison\NamedQuery\Enums\TypeFile::PHP,则所有SQL必须存储在PHP文件中。

执行SQL

NamedQuery::executeNamedQuery('find_tab1', 'nfe/named-querys', [
    'PAR1' => $numero,
]);

这样执行SQL,查询结果将返回stdClass类型。如果需要不同类型的结果,请按以下方式执行

使用ResultClass执行SQL

NamedQuery::executeNamedQuery('find_nfe_by_key', 'nfe/named-querys', [
    'numero'        => $numero,
    'cnpj_emitente' => $cnpjEmitente,
    'serie'         => $serie,
    'tpamb'         => $tpAmb,
    'mod'           => $mod,
], NFe::class);

调试构建的SQL

NamedQuery::executeNamedQuery('find_nfe_by_key', 'nfe/named-querys', [
    'numero'        => $numero,
    'cnpj_emitente' => $cnpjEmitente,
    'serie'         => $serie,
    'tpamb'         => $tpAmb,
    'mod'           => $mod,
], NFe::class, true);