gpt4 book ai didi

php - 如何控制在 symfony1.4 任务中从 database.yml 中选择哪个连接

转载 作者:可可西里 更新时间:2023-11-01 13:20:51 27 4
gpt4 key购买 nike

(请参阅下面我的编辑以获得更好的问题) 如何仅使用通用的 symfony1.4 任务来控制选择哪个连接(从 database.yml 中的正确环境部分) Doctrine_Query::create() 创建查询?

我正在使用看起来像这样的 database.yml:

prod:
doctrine:
class: sfDoctrineDatabase
param:
dsn: mysql://some:pass@domain:port/database

log:
class: sfDoctrineDatabase
param:
dsn: mysql://some:pass@domain:port/database
auth:
class: sfDoctrineDatabase
param:
dsn: mysql://some:pass@domain:port/database

dev:
doctrine:
class: sfDoctrineDatabase
param:
dsn: mysql://some:otherpass@domain:port/database

log:
class: sfDoctrineDatabase
param:
dsn: mysql://some:otherpass@domain:port/database

auth:
class: sfDoctrineDatabase
param:
dsn: mysql://some:otherpass@domain:port/database

而且我希望能够控制在调用类似以下内容时使用这些数据库定义中的哪一个:

$query = Doctrine_Query::create()
->select('*')
->from('Products p')
->where('p.id = ?', $productID)
->limit(1);

$OfpFlPr = $query->execute()->getFirst();

目前我无法像这样设置连接$query = Doctrine_Query::create($conn);

如有任何帮助,我们将不胜感激!


编辑:

我在使用 Doctrine_Query::create() 的软件中有很多更深层次的代码(没有连接参数)。好像是通过web请求来选择合适的环境和连接。但我不知道它是如何做到这一点的,所以我可以让我的CLI 命令 以同样的方式工作(它们目前没有选择正确的连接和环境)。这就是为什么我需要知道如何控制“自动”使用哪个连接(默认选择)。

问题:

所以我想最后我的问题是:

当代码作为 symfony CLI 命令执行时,我如何控制在使用 Doctrine_Query::create() 的较低级别代码中默认选择哪个连接?

最佳答案

$query = Doctrine_Query::create($doctrineManager->getConnection('doctrine'))
->select('*')
->from('Products p')
->where('p.id = ?', $productID)
->limit(1);

应该可以。根据您从何处选择 Product,参数可能是“doctrine”、“log”或“auth”。

您能详细说明一下为什么您“无法设置连接”吗?

编辑:

所以如果我做对了,你喜欢在 cli 命令中指定环境,以使用 database.yml 中右侧部分的 dsn 连接字符串。您可以为您的 cli 命令使用 env 选项来执行此操作。您可能需要添加类似

的内容
$this->addOption('env', null, sfCommandOption::PARAMETER_OPTIONAL, 'Specify environment', 'prod'); 

到任务配置。

关于php - 如何控制在 symfony1.4 任务中从 database.yml 中选择哪个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33503852/

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