我正在尝试将SQL视图与Doctrine一起使用。
到目前为止一切正常,但是我在运行基本夹具加载(没有选项(时遇到了问题。我收到以下错误消息。
[DoctrineDBALDBALException]
An exception occurred while executing 'DELETE FROM gp_items':
SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]View or function 'gp_items' is not updatable
because the modification affects multiple base tables.
[DoctrineDBALDriverPDOException]
SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]View or function 'gp_items' is not updatable
because the modification affects multiple base tables.
[PDOException]
SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]View or function 'gp_items' is not updatable
because the modification affects multiple base tables.
我查看了从捆绑包加载固定装置的代码("doctrine/doctrine-fixtures-bundle":"^2.3"(,我认为我必须将某些内容更改为ORMPurger(Doctrine\Common\DataFixtures\Purger(,但我不确定如何去做。
所以我想知道如何覆盖该特定类中的函数。
干杯!
好的,
所以我决定分叉DoctrineFixturesBundle,并在我的项目中使用它。
https://github.com/jbonnier/DoctrineFixturesBundle
为了让作曲家使用它,我修改了我的 composer.json 文件,在最后一个右括号之前添加了以下代码。
,
"repositories": [
{
"type": "vcs",
"url": "https://github.com/jbonnier/DoctrineFixturesBundle"
}
]
我还更改了我的 require-dev 语句以使用我的人身分支。
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "dev-jbonnier",
...
}
编辑:
附加说明。
我目前正在使用该捆绑包的 v2.4.1 版本。
这是我对它所做的更改。
文件 : 命令/加载数据夹具学说命令.php
更改了 113 行
从
$purger = new ORMPurger($em);
自
$purger = new ORMPurger($em, $this->listViews($input->getOption('em')));
在第 136 行之后向类添加函数
/**
* Return an array with all views names in the database.
*
* @return array
*/
protected function listViews($entityManager)
{
$em = $this->getContainer()->get('doctrine')->getManager($entityManager);
$conn = $em->getConnection();
$sm = $conn->getSchemaManager();
$views = $sm->listViews();
$rst = array();
foreach ($views as $view)
{
array_push($rst, $view->getName());
}
return $rst;
}
我遇到了类似的问题。我很懒,所以我做了解决方法,以这种方式加载我们的灯具。
我你找到一个干净的解决方案我感兴趣
bin/console -e=test doctrine:database:drop --if-exists --force
bin/console -e=test doctrine:database:create --if-not-exists --no-interaction
bin/console -e=test doctrine:migrations:migrate --no-interaction
bin/console -e=test doctrine:fixtures:load --append --no-interaction