monii / specification-sql-adapter
此包已被放弃且不再维护。未建议替代包。
Specification SQL Adapter
dev-master / 0.0.x-dev
2016-02-24 11:30 UTC
Requires
- php: ^5.5|~7.0
- monii/specification: ^0.0@dev
Requires (Dev)
- phpunit/phpunit: ^4.8
- squizlabs/php_codesniffer: ^2.3
This package is not auto-updated.
Last update: 2016-12-03 16:03:12 UTC
README
Monii实现规格模式的SQL适配器。它提供将规格渲染成SQL查询的工具。
需求
- PHP 5.5+
- monii/specification
- 用于消费SQL查询的组件
安装
$> composer require monii/specification-sql-adapter
直到发布稳定版本或如果更喜欢开发版本,请使用
$> composer require monii/specification-sql-adapter:@dev
限制
此库目前不支持连接(JOIN),并且可能永远不会支持。底层的SqlQuery
类非常简单,需要更多测试。它在我们设计的范围内工作良好,但还需要大量工作。
如果您需要更强大的功能,可以考虑编写自己的实现。规格库旨在支持专门的渲染适配器,以满足特定的需求。
示例用法
仓库
通过查看一个示例Doctrine DBAL仓库实现,可以简单地了解如何使用此渲染器与Monii的规格包一起使用。在这种情况下,我们的查询构建器设置为知道如何将两个属性映射到相应的表列。我们还假设objectsFromRows
是共享的,这样它就可以接收一个数组来构建所选择的对象。
class DbalContactRepository implements ContactRepository { /** * @var Connection */ private $connection; /** * @var SqlSpecificationQueryBuilder */ private $sqlSpecificationQueryBuilder; /** * @var string */ private $tableName; /** * @param string $tableName */ public function __construct( Connection $connection, SqlSpecificationQueryBuilder $sqlSpecificationQueryBuilder, $tableName = 'terse_contact' ) { $this->connection = $connection; $this->sqlSpecificationQueryBuilder = $sqlSpecificationQueryBuilder; $this->tableName = $tableName; } /** * {@inheritdoc} */ public function findMatching(Specification $specification) { $sqlQuery = $this->sqlSpecificationQueryBuilder->buildQuery($specification, [ 'person.firstName' => 'person_first_name', 'person.lastName' => 'person_last_name', ]); $statement = $this->connection->prepare($sqlQuery->getSql($this->tableName)); $statement->execute($sqlQuery->getValues()); $results = $statement->fetchAll(); return $this->objectsFromRows($results); } }
许可
MIT,请参阅LICENSE。
社区
想要参与进来?以下是一些方法
- 在irc.freenode.org的#monii IRC频道找到我们。
- 在Twitter上提及@moniidev。