Symfony原则不能更改列';id';
我正在使用Symfony 2.7开发AngularJS应用程序,我有一个无法使用的注册表,我无法在数据库中注册新用户。 第一个错误发生了Symfony原则不能更改列';id';,symfony,doctrine-orm,Symfony,Doctrine Orm,我正在使用Symfony 2.7开发AngularJS应用程序,我有一个无法使用的注册表,我无法在数据库中注册新用户。 第一个错误发生了 [Doctrine\DBAL\DBALException] 请求的未知数据库类型enum,条令\DBAL\Platforms\MySqlPlatform 可能不支持 因此,我通过添加以下内容编辑了配置文件: mapping_types: enum: string 我执行了: php app/console doctrine:schema:u
[Doctrine\DBAL\DBALException]
请求的未知数据库类型enum,条令\DBAL\Platforms\MySqlPlatform
可能不支持
因此,我通过添加以下内容编辑了配置文件:
mapping_types:
enum: string
我执行了:
php app/console doctrine:schema:update --force
我收到了以下错误消息:
[Doctrine\DBAL\Exception\DriverException]
执行“ALTER TABLE user CHANGE id INT AU”时发生异常
要增加非空值…解决文档中问题的两种解决方案: 第一个更简单: 您可以将枚举映射到varchar。您可以注册MySQL枚举以映射到Doctrine varchars。这样,条令总是将enum分解为varchars条令。当使用SchemaTool更新命令时,它甚至可以正确地检测到这种匹配
<?php
$conn = $em->getConnection();
$conn->getDatabasePlatform()->registerDoctrineTypeMapping('enum', 'string');
<?php
/** @Entity */
class Article
{
const STATUS_VISIBLE = 'visible';
const STATUS_INVISIBLE = 'invisible';
/** @Column(type="string") */
private $status;
public function setStatus($status)
{
if (!in_array($status, array(self::STATUS_VISIBLE, self::STATUS_INVISIBLE))) {
throw new \InvalidArgumentException("Invalid status");
}
$this->status = $status;
}
}
<?php
/** @Entity */
class Article
{
/** @Column(type="string", columnDefinition="ENUM('visible', 'invisible')") */
private $status;
}