makinacorpus / query-builder-bundle
makinacorpus/query-builder的Symfony集成
1.0.0
2024-04-25 09:30 UTC
Requires
- php: >=8.1
- doctrine/doctrine-bundle: ^2.10.0
- makinacorpus/query-builder: ^0.3.0|^1.0
- symfony/config: ^6.0|^7.0
- symfony/console: ^6.0|^7.0
- symfony/dependency-injection: ^6.0|^7.0
- symfony/filesystem: ^6.0|^7.0
- symfony/finder: ^6.0|^7.0
- symfony/process: ^6.0|^7.0
- symfony/yaml: ^6.0|^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.34
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.3
- symfony/framework-bundle: ^6.0|^7.0
- symfony/validator: ^6.0|^7.0
README
将makinacorpus/query-builder
集成到Symfony中。
设置
首次安装
composer require makinacorpus/query-builder-bundle
然后如果symfony/flex
没有做的话,将捆绑包添加到config/bundles.php
return [ // ... your other bundles. MakinaCorpus\QueryBuilderBundle\QueryBuilderBundle::class => ['all' => true], ];
这样就完成了。
服务
每个Doctrine连接将关联容器中的MakinaCorpus\QueryBuilder\QueryBuilder
和MakinaCorpus\QueryBuilder\DatabaseSession
服务。
它们通过query_builder.session.CONNECTION_NAME
服务标识符进行标识。您可以通过服务名称手动注入,或使用自动装配。
您可以通过注入一个QueryBuilder
或DatabaseSession
类型的服务来针对Doctrine连接,通过设置参数名称为Doctrine连接名称,例如
<?php declare (strict_types=1); namespace App\Controller; use MakinaCorpus\QueryBuilder\DatabaseSession; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class TestingController extends AbstractController { #[Route('/testing/query-builder', name: 'testing_query_builder')] public function testQueryBuilder( DatabaseSession $someConnectionName, ): Response { } }
将数据库会话桥接至配置的Doctrine连接some_connection_name
。
使用方法
简单地在任何需要的地方注入服务,例如控制器操作
<?php declare (strict_types=1); namespace App\Controller; use MakinaCorpus\QueryBuilder\DatabaseSession; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; class TestingController extends AbstractController { #[Route('/testing/query-builder', name: 'testing_query_builder')] public function testQueryBuilder( DatabaseSession $session, ): Response { $result = $session ->select('some_table') ->executeQuery() ; $data = []; foreach ($result->iterateAssociative() as $row) { $data[] = $row; } return $this->json($data); } }
基本,简单。