Doctrine 重命名我所有的索引,即使我不要求它
Doctrine rename all my index even if i don't ask for it
我是 doctrine 和 Symfony 的新手,我不明白为什么我的迁移总是包含一些用于重命名索引的行。
我更喜欢为我的索引保留一个可读的语义名称,我应该使用哪个选项?
这是我用来创建迁移的命令:
php bin/console make:migration
这是我的实体:
/**
* ArticleFournisseur
*
* @ORM\Table(name="article_fournisseur")
* @ORM\Entity
*/
class ArticleFournisseur
{
/**
* @var int|null
*
* @ORM\Column(name="Qte", type="integer", nullable=true)
*/
private $qte;
/**
* @var float|null
*
* @ORM\Column(name="Prix_unitaire", type="float", precision=10, scale=0, nullable=true)
*/
private $prixUnitaire;
/**
* @var \Article
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\OneToOne(targetEntity="Article")
* @ORM\JoinColumn(name="no_article", referencedColumnName="no_article")
*/
private $NoArticle;
/**
* @var \Emplacement
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\OneToOne(targetEntity="Emplacement")
* @ORM\JoinColumn(name="Id_emplacement", referencedColumnName="Id_emplacement")
*/
private $idEmplacement;
/**
* @var \Fournisseur
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\OneToOne(targetEntity="Fournisseur")
* @ORM\JoinColumn(name="Id_fournisseur", referencedColumnName="Id_fournisseur")
*/
private $idFournisseur;
/**
* @var \Statut
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\ManyToOne(targetEntity="Statut")
* @ORM\JoinColumn(name="Id_statut", referencedColumnName="Id_Statut")
*/
private $idStatut;
}
这是我在生成的迁移文件中得到的部分结果:
// ./migrations/Version202007211565895.php
public function up(Schema $schema) : void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE article_fournisseur RENAME INDEX fk_art_fou__art TO IDX_AC1DA055BC2E22B2');
$this->addSql('ALTER TABLE article_fournisseur RENAME INDEX fk_art_fou__emplacement TO IDX_AC1DA05515B9D0D9');
$this->addSql('ALTER TABLE article_fournisseur RENAME INDEX fk_art_fou__fou TO IDX_AC1DA055E3E87F1D');
$this->addSql('ALTER TABLE article_fournisseur RENAME INDEX fk_art_fou__statut TO IDX_AC1DA05541A2C7F1');
我只是做了一件特别的事情,我使用以下命令从我的数据库创建了我的实体:
php bin/console doctrine:mapping:import "App\Entity" annotation --path=src/Entity
感谢您的帮助
编辑:
好的,现在重命名索引的行已经消失了,但我仍然遇到与外键名称相同的问题。
请你看看这个:
// ./migrations/Version2020072194047.php
public function up(Schema $schema) : void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE article_fournisseur DROP FOREIGN KEY fk_art_fou__statut');
$this->addSql('ALTER TABLE article_fournisseur ADD CONSTRAINT FK_AC1DA055BC2E22B2 FOREIGN KEY (no_article) REFERENCES article (no_article)');
看,外键约束被删除,然后用另一个名称重新创建。
但也许我必须为此创建另一个问题?
Doctrine 允许命名索引(参见docs)。
例如:
/**
* ArticleFournisseur
*
* @ORM\Table(name="article_fournisseur",indexes={@Index(name="idx_idEmplacement", columns={"idEmplacement"})})
* @ORM\Entity
*/
您可以根据需要进行调整。
我是 doctrine 和 Symfony 的新手,我不明白为什么我的迁移总是包含一些用于重命名索引的行。
我更喜欢为我的索引保留一个可读的语义名称,我应该使用哪个选项?
这是我用来创建迁移的命令:
php bin/console make:migration
这是我的实体:
/**
* ArticleFournisseur
*
* @ORM\Table(name="article_fournisseur")
* @ORM\Entity
*/
class ArticleFournisseur
{
/**
* @var int|null
*
* @ORM\Column(name="Qte", type="integer", nullable=true)
*/
private $qte;
/**
* @var float|null
*
* @ORM\Column(name="Prix_unitaire", type="float", precision=10, scale=0, nullable=true)
*/
private $prixUnitaire;
/**
* @var \Article
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\OneToOne(targetEntity="Article")
* @ORM\JoinColumn(name="no_article", referencedColumnName="no_article")
*/
private $NoArticle;
/**
* @var \Emplacement
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\OneToOne(targetEntity="Emplacement")
* @ORM\JoinColumn(name="Id_emplacement", referencedColumnName="Id_emplacement")
*/
private $idEmplacement;
/**
* @var \Fournisseur
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\OneToOne(targetEntity="Fournisseur")
* @ORM\JoinColumn(name="Id_fournisseur", referencedColumnName="Id_fournisseur")
*/
private $idFournisseur;
/**
* @var \Statut
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\ManyToOne(targetEntity="Statut")
* @ORM\JoinColumn(name="Id_statut", referencedColumnName="Id_Statut")
*/
private $idStatut;
}
这是我在生成的迁移文件中得到的部分结果:
// ./migrations/Version202007211565895.php
public function up(Schema $schema) : void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE article_fournisseur RENAME INDEX fk_art_fou__art TO IDX_AC1DA055BC2E22B2');
$this->addSql('ALTER TABLE article_fournisseur RENAME INDEX fk_art_fou__emplacement TO IDX_AC1DA05515B9D0D9');
$this->addSql('ALTER TABLE article_fournisseur RENAME INDEX fk_art_fou__fou TO IDX_AC1DA055E3E87F1D');
$this->addSql('ALTER TABLE article_fournisseur RENAME INDEX fk_art_fou__statut TO IDX_AC1DA05541A2C7F1');
我只是做了一件特别的事情,我使用以下命令从我的数据库创建了我的实体:
php bin/console doctrine:mapping:import "App\Entity" annotation --path=src/Entity
感谢您的帮助
编辑:
好的,现在重命名索引的行已经消失了,但我仍然遇到与外键名称相同的问题。 请你看看这个:
// ./migrations/Version2020072194047.php
public function up(Schema $schema) : void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE article_fournisseur DROP FOREIGN KEY fk_art_fou__statut');
$this->addSql('ALTER TABLE article_fournisseur ADD CONSTRAINT FK_AC1DA055BC2E22B2 FOREIGN KEY (no_article) REFERENCES article (no_article)');
看,外键约束被删除,然后用另一个名称重新创建。
但也许我必须为此创建另一个问题?
Doctrine 允许命名索引(参见docs)。
例如:
/**
* ArticleFournisseur
*
* @ORM\Table(name="article_fournisseur",indexes={@Index(name="idx_idEmplacement", columns={"idEmplacement"})})
* @ORM\Entity
*/
您可以根据需要进行调整。