makinacorpus/query-builder-bundle

makinacorpus/query-builder的Symfony集成

安装: 9

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

1.0.0 2024-04-25 09:30 UTC

This package is auto-updated.

Last update: 2024-09-25 10:20:58 UTC


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\QueryBuilderMakinaCorpus\QueryBuilder\DatabaseSession服务。

它们通过query_builder.session.CONNECTION_NAME服务标识符进行标识。您可以通过服务名称手动注入,或使用自动装配。

您可以通过注入一个QueryBuilderDatabaseSession类型的服务来针对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);
    }
}

基本,简单。