gpt4 book ai didi

php - 即使我不要求,教义也会重命名我的所有索引

转载 作者:行者123 更新时间:2023-12-02 02:44:33 24 4
gpt4 key购买 nike

我是学说和 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
*/

您可以根据需要进行调整。

关于php - 即使我不要求,教义也会重命名我的所有索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63018520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com