【发布时间】:2013-11-11 02:25:37
【问题描述】:
我有一个奇怪的问题: 我有一个应用程序 symfony 2.3(带有奏鸣曲用户) 我创建了一个包含一个实体的捆绑包 - 该实体的创建没有问题 然后我不得不修改实体,现在似乎无法修改架构:
为了看看会发生什么,我用 +1 增加了所有字符串的长度
实体代码(带注释):
namespace Too\ConfigAppBundle\Entity;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* ConfigApp
*
* @ORM\Table(name="ConfigApp")
* @ORM\Entity(repositoryClass="Too\ConfigAppBundle\Entity\ActiviteRepository")
*/
class ConfigApp
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string $nom
*
* @ORM\Column(name="nom", type="string", length=101, unique=true)
*/
private $nom;
/**
* @var string $nomSlug
*
* @Gedmo\Slug(fields={"nom"}, updatable=true, separator="_")
* @ORM\Column(name="nomSlug", type="string", length=101, nullable=true)
*/
private $nomSlug;
/**
* @var string $email
*
* @ORM\Column(name="email", type="string", length=151)
*/
private $email;
/**
* @var string $telephone
*
* @ORM\Column(name="telephone", type="string", length=16)
*/
private $telephone;
/**
* @var datetime $cree_le
*
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="cree_le", type="datetime")
*/
private $cree_le;
/**
* @var datetime $modifie_le
*
* @Gedmo\Timestampable(on="update")
* @ORM\Column(name="modifie_le", type="datetime")
*/
private $modifie_le;
...
现在看看结果:
php app/console doctrine:schema:update --dump-sql
CREATE TABLE ConfigApp (id INT AUTO_INCREMENT NOT NULL, nom VARCHAR(100) NOT NULL, nomSlug VARCHAR(100) NOT NULL, email VARCHAR(150) NOT NULL, telephone VARCHAR(15) NOT NULL, cree_le DATETIME NOT NULL, modifie_le DATETIME NOT NULL, PRIMARYKEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB
没有考虑新的长度: 例如字段 nom 应该有长度=101, 但是 dump-sql 给出了 nom VARCHAR(100) !
任何人都可以尝试找出问题所在吗? 谢谢!
编辑: 我之前尝试使用以下命令清除缓存: * php 应用程序/控制台原则:缓存:清除元数据 * php 应用程序/控制台缓存:清除 * 通过删除缓存文件夹中的所有内容
我也试过 --dump-sql 和 --force。
这根本没有改变。 欢迎任何提示!
【问题讨论】:
-
我会尝试清除元数据缓存。我认为是
doctrine:cache:clear-metadata。只需运行app/console即可查看命令列表
标签: php symfony doctrine-orm