我已经使用symfony 1.4和Doctrine构建了一种小型CMS。它使用数据库存储不同的页面和类别。
现在,为了检索客户端信息,我向databases.yml添加了另一个连接。
我想向symfony指出,该数据库是只读的,它永远不应该写入它。
目前,我已经在第二个数据库上创建了一个只能读取的用户,尽管像doctrine:build --all这样的命令仍然试图在其中写入,但它似乎能做到这一点。
编辑:感谢Pascal的回答,我用events告诉原则,任务sfDoctrineDropDbTask只使用一个db。
public function setup()
{
(...)
$this->dispatcher->connect('command.filter_options', array($this, 'filterCommandOptions'));
}
public function filterCommandOptions(sfEvent $event, $options)
{
if ('sfDoctrineDropDbTask' === get_class($event->getSubject()))
$options = array('base1');
elseif ('sfDoctrineBuildDbTask' === get_class($event->getSubject()))
$options = array('base1');
elseif ('sfDoctrineDataDumpTask' === get_class($event->getSubject()))
$options = array('base1');
//elseif ('sfDoctrineInsertSqlTask' === get_class($event->getSubject()))
//$options = array('base1');
elseif ('sfDoctrineCreateModelTables' === get_class($event->getSubject()))
$options = array('base1');
return $options;
}这个技巧似乎不适用于其他任务:
doctrine:data-dump仍然读取两个数据库,doctrine:build --all tasksfDoctrineInsertSqlTask中编写,抱怨说我给了太多的选择。发布于 2011-11-30 15:17:35
您可以强制使用数据库原则的名称:build-all可以使用事件删除。
https://stackoverflow.com/questions/8327924
复制相似问题