Symfony教义:尽管执行php bin/console教义:schema:update --complete --force命令,但列未添加到数据库中的表中

7uzetpgm  于 2023-10-23  发布在  PHP
关注(0)|答案(2)|浏览(105)

尽管执行php bin/console doctrine:schema:update --complete --force命令,但列未添加到数据库中的表中
命令php bin/console doctrine:schema:update --force确实生成了带有字段的实体。但是,当我试图向现有实体添加字段时,它并没有像预期的那样工作。尽管该命令成功地创建了初始实体及其字段,但在尝试通过添加新字段来修改现有实体时,它似乎遇到了问题。我在为预先存在的实体添加额外字段时遇到了困难。
doctrine.yaml

doctrine:
    dbal:
        driver: pdo_mysql
        host: '%database_host%'
        port: '%database_port%'
        dbname: '%database_name%'
        user: '%database_user%'
        password: '%database_password%'
        # only needed for MySQL
        charset: utf8mb4
        default_table_options:
            collate: utf8mb4_unicode_ci
        mapping_types:
            enum: string
        server_version: 5.7
        # Pour changer le mode sql pour supporter le NONE_FULL_GROUP_BY pour les requêtes sql
        options:
            1002: 'SET sql_mode=(SELECT REPLACE(@@sql_mode, "ONLY_FULL_GROUP_BY", ""))'
        # if using pdo_sqlite as your database driver:
        #   1. add the path in parameters.yml
        #     e.g. database_path: '%kernel.project_dir%/var/data/data.sqlite'
        #   2. Uncomment database_path in parameters.yml.dist
        #   3. Uncomment next line:
        #path: '%database_path%'

    orm:    
        auto_generate_proxy_classes: false
        naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
        auto_mapping: true
        dql:
            string_functions:
                WEEK: DoctrineExtensions\Query\Mysql\Week
                MONTH: DoctrineExtensions\Query\Mysql\Month
                YEAR: DoctrineExtensions\Query\Mysql\Year
            datetime_functions:
                TimestampDiff: DoctrineExtensions\Query\Mysql\TimestampDiff
        mappings:
            App:
                is_bundle: false
                dir: '%kernel.project_dir%/src/Entity'
                prefix: 'App\Entity'
                alias: App

when@test:
    doctrine:
        dbal:
            # "TEST_TOKEN" is typically set by ParaTest
            dbname_suffix: '_test%env(default::TEST_TOKEN)%'

when@prod:
    doctrine:
        orm:
            auto_generate_proxy_classes: false
            query_cache_driver:
                type: pool
                pool: doctrine.system_cache_pool
            result_cache_driver:
                type: pool
                pool: doctrine.result_cache_pool

    framework:
        cache:
            pools:
                doctrine.result_cache_pool:
                    adapter: cache.app
                doctrine.system_cache_pool:
                    adapter: cache.system

实体:

<?php

namespace App\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;

/**
 * Incident_collecte
 * 
 * @author Alaa
 *
 * @ORM\Table(name="incident_collecte")
 * @ORM\Entity(repositoryClass="App\Repository\IncidentCollecteRepository")
 * 
 */
class IncidentCollecte
{
 ---------   
    /**
     * @ORM\Column(type="array", nullable=true)
     * 
     * Table des meta-données d'un incident qui permet sa gestion, comme son état précédent
     **/
    private $metaData;

    #[ORM\Column(type: Types::DATETIME_MUTABLE, nullable: true)]
    private ?\DateTimeInterface $UpdatedDateStatutFromPortal = null;

/**
     * Get id
     *
     * @return integer
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set dateCreation
     *
     * @param \DateTime $dateCreation
     *
     * @return IncidentCollecte
     */
    public function setDateCreation($dateCreation)
    {
        $this->date_creation = $dateCreation;

        return $this;
    }

    /**
     * Get dateCreation
     *
     * @return \DateTime
     */
    public function getDateCreation()
    {
        return $this->date_creation;
    }

    /**
     * Set description
     *
     * @param string $description
     *
     * @return IncidentCollecte
     */
    public function setDescription($description)
    {
        $this->description = $description;

        return $this;
    }

    /**
     * Get description
     *
     * @return string
     */
    public function getDescription()
    {
        return $this->description;
    }

    /**
     * Set idDemande.
     *
     * @param int $idDemande
     *
     * @return IncidentCollecte
     */
    public function setIdDemande($idDemande)
    {
        $this->id_demande = $idDemande;

        return $this;
    }

    /**
     * Get idDemande.
     *
     * @return int
     */
    public function getIdDemande()
    {
        return $this->id_demande;
    }

    /**
     * Set dateCloture.
     *
     * @param \DateTime|null $dateCloture
     *
     * @return IncidentCollecte
     */
    public function setDateCloture($dateCloture = null)
    {
        $this->date_cloture = $dateCloture;

        return $this;
    }

    /**
     * Get dateCloture.
     *
     * @return \DateTime|null
     */
    public function getDateCloture()
    {
        return $this->date_cloture;
    }

    /**
     * Set typeDemande.
     *
     * @param string|null $typeDemande
     *
     * @return IncidentCollecte
     */
    public function setTypeDemande($typeDemande = null)
    {
        $this->type_demande = $typeDemande;

        return $this;
    }

    /**
     * Get typeDemande.
     *
     * @return string|null
     */
    public function getTypeDemande()
    {
        return $this->type_demande;
    }

    /**
     * Set cleDemande.
     *
     * @param string $cleDemande
     *
     * @return IncidentCollecte
     */
    public function setCleDemande($cleDemande)
    {
        $this->cle_demande = $cleDemande;

        return $this;
    }

    /**
     * Get cleDemande.
     *
     * @return string
     */
    public function getCleDemande()
    {
        return $this->cle_demande;
    }

    /**
     * Set raisonCloture.
     *
     * @param string|null $raisonCloture
     *
     * @return IncidentCollecte
     */
    public function setRaisonCloture($raisonCloture = null)
    {
        $this->raison_cloture = $raisonCloture;

        return $this;
    }

    /**
     * Get raisonCloture.
     *
     * @return string|null
     */
    public function getRaisonCloture()
    {
        return $this->raison_cloture;
    }

    /**
     * Set priorite.
     *
     * @param string $priorite
     *
     * @return IncidentCollecte
     */
    public function setPriorite($priorite)
    {
        $this->priorite = $priorite;

        return $this;
    }

    /**
     * Get priorite.
     *
     * @return string
     */
    public function getPriorite()
    {
        return $this->priorite;
    }

    /**
     * Set etat.
     *
     * @param string $etat
     *
     * @return IncidentCollecte
     */
    public function setEtat($etat)
    {
        $this->etat = $etat;

        return $this;
    }

    /**
     * Get etat.
     *
     * @return string
     */
    public function getEtat()
    {
        return $this->etat;
    }

    /**
     * Set regle.
     *
     * @param string|null $regle
     *
     * @return IncidentCollecte
     */
    public function setRegle($regle = null)
    {
        $this->regle = $regle;

        return $this;
    }

    /**
     * Get regle.
     *
     * @return string|null
     */
    public function getRegle()
    {
        return $this->regle;
    }

    /**
     * Set DatePriseEnCompteClient.
     *
     * @param \DateTime|null $datePriseEnCompteClient
     *
     * @return IncidentCollecte
     */
    public function setDatePriseEnCompteClient($dateMajClient = null)
    {
        $this->date_prise_en_compte_client = $dateMajClient;

        return $this;
    }

    /**
     * Get DatePriseEnCompteClient.
     *
     * @return \DateTime|null
     */
    public function getDatePriseEnCompteClient()
    {
        return $this->date_prise_en_compte_client;
    }

    /**
     * Set impact.
     *
     * @param string|null $impact
     *
     * @return IncidentCollecte
     */
    public function setImpact($impact = null)
    {
        $this->impact = $impact;

        return $this;
    }

    /**
     * Get impact.
     *
     * @return string|null
     */
    public function getImpact()
    {
        return $this->impact;
    }

    /**
     * @return Collection|Siiv[]
     */
    public function getSiiv(): Collection
    {
        return $this->siiv;
    }

    public function addSiiv(Siiv $siiv): self
    {
        if (!$this->siiv->contains($siiv)) {
            $this->siiv[] = $siiv;
        }

        return $this;
    }

    public function removeSiiv(Siiv $siiv): self
    {
        $this->siiv->removeElement($siiv);

        return $this;
    }

    /**
     * Set collecteurLogs.
     *
     * @param string|null $collecteurLogs
     *
     * @return IncidentCollecte
     */
    public function setCollecteurLogs($collecteurLogs = null)
    {
        $this->collecteur_logs = $collecteurLogs;

        return $this;
    }

    /**
     * Get collecteurLogs.
     *
     * @return string|null
     */
    public function getCollecteurLogs()
    {
        return $this->collecteur_logs;
    }

    /**
     * Set metaData.
     *
     * @param array|null $metaData
     *
     * @return IncidentCollecte
     */
    public function setMetaData($metaData = null)
    {
        $this->metaData = $metaData;

        return $this;
    }

    /**
     * Get metaData.
     *
     * @return array|null
     */
    public function getMetaData()
    {
        return $this->metaData;
    }

    /**
     * @return string|null
     */
    public function getNumoffense(): ?string
    {
        return $this->numoffense;
    }

    /**
     *
     * @param string|null $numoffense
     * @return IncidentCollecte
     */
    public function setNumoffense(?string $numoffense): IncidentCollecte
    {
        $this->numoffense = $numoffense;

        return $this;
    }

    /**
     * @return string|null
     */
    public function getSeverity(): ?string
    {
        return $this->severity;
    }

    /**
     * @param string|null $severity
     * @return IncidentCollecte
     */
    public function setSeverity(?string $severity): IncidentCollecte
    {
        $this->severity = $severity;

        return $this;
    }

    public function getUpdatedDateStatutFromPortal(): ?\DateTimeInterface
    {
        return $this->UpdatedDateStatutFromPortal;
    }

    public function setUpdatedDateStatutFromPortal(?\DateTimeInterface $UpdatedDateStatutFromPortal): static
    {
        $this->UpdatedDateStatutFromPortal = $UpdatedDateStatutFromPortal;

        return $this;
    }
}
nbysray5

nbysray51#

你有没有尝试只使用注解而不是混合使用注解和PHP属性?
查看更多详情:How can i use php8 attributes instead of annotations in doctrine?

3zwjbxry

3zwjbxry2#

由于这是一个Symfony项目,您可能还需要考虑使用Symfony提供的DoctrineMigrationsBundle,这是一种更快,更容易和更安全的方式来实现对数据库模式的更改。你可能还想考虑Symfonyt Maker Bundle,它也可以创建和/或者添加到现有的实体模式中要容易得多。它处理创建正确注解的所有繁琐工作,以及处理您可能拥有的任何关系表。

相关问题