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

标签 php doctrine symfony-1.4 doctrine-1.2

(请参阅下面我的编辑以获得更好的问题) 如何仅使用通用的 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/

相关文章:

PHP - 浏览器不缓存动态图像

PHP 数组到 JQuery

doctrine - Doctrine 鉴别器如何知道要使用 map 中的哪个实体

php - 无法更改 Doctrine 连接

php - Symfony - 创建插件需要什么?

javascript - 在 Symfony 1.4 中自动压缩 Javascript 和 CSS

PhpMailer,以其他名称发送附件

PHP 和 MySQL 数据库查询问题

php - 确定哪个字段导致 Doctrine 重新查询数据库

symfony1 - 如何创建需要访问其他字段值的 Symfony 验证器?