gpt4 book ai didi

mysql - Symfony Doctrine 创建复杂查询

转载 作者:行者123 更新时间:2023-11-29 12:03:56 24 4
gpt4 key购买 nike

我有一个 mysql 查询,它并不是很复杂,但我似乎无法理解应该如何在 Symfony 中编写它。

首先是查询:

select
db1.table1.acronym
, db1.table1.name
, db2.table1.name
from db1.table1, db2.table1
where db1.table1.acronym like concat('%', @t1, '%')
or db1.table1.name like concat('%', @t1,'%')
or db2.table1.name like concat('%', @t1,'%');

我基本上想看看 t1 是否是这些列中任何单词的一部分。假设 @t1 是正在传递的变量。我不确定是否应该将其写在存储库中,如果应该如何写。我正在寻找最佳实践方法。

谢谢。

最佳答案

首先,您需要为第一个数据库和第二个数据库配置两个 Doctrine DB 连接。它看起来像这样(我假设您还没有为表创建实体):

//in config.yml

doctrine:
dbal:
default_connection: db1
connections:
db1:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
db2:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name2%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8

请注意,这里我们在“dbname”中使用参数database_name2进行db2连接,其他参数很可能是相同的,除非您在另一台服务器上有其他数据库,因此您应该在parameters.yml中相应地创建参数。

然后,您可以在 Controller 操作中获取与单独数据库的连接,如下所示:

//SomeController.php

$connection1 = $this->getDoctrine()->getConnection('db1');
$connection2 = $this->getDoctrine()->getConnection('db2');


$results1 = $connection1->fetchAll('SELECT acronym, name FROM table1 ...');
$results2 = $connection2->fetchAll('SELECT name FROM table2 ...')

注意,这不是最佳实践。最佳实践是为表创建实体,然后沿着我上面创建的连接创建单独的实体管理器。

How to properly setup multiple connections with entity managers

关于mysql - Symfony Doctrine 创建复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31887215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com