执行Doctrine生成实体命令时遇语义错误:找不到utilisateursadresses常量
Hey there, let's break down the issues causing that semantic error and fix them one by one:
1. Missing quotes around table name in entity annotation
The first big problem is in your UtilisateursAdresses entity's table annotation. You wrote:
@ORM\Table(utilisateursadresses)
Doctrine interprets utilisateursadresses as a PHP constant here, but no such constant exists—hence the "Couldn't find constant utilisateursadresses" error.
Fix it by wrapping the table name in quotes and explicitly using the name attribute:
/** * UtilisateursAdresses * * @ORM\Table(name="utilisateursadresses") * @ORM\Entity(repositoryClass="Ecommerce\EcommerceBundle\Repository\UtilisateursAdressesRepository") */
2. Incorrect namespace in association mappings
In your Utilisateurs entity, the OneToMany associations for $adresses and $commandes point to the wrong namespace. You referenced Ecommerce\RcommerceBundle\Entity\..., but your UtilisateursAdresses is actually in Ecommerce\EcommerceBundle\Entity\.
Fix the targetEntity paths:
// Correct the adresses association /** * @ORM\OneToMany(targetEntity="Ecommerce\EcommerceBundle\Entity\UtilisateursAdresses", mappedBy="utilisateurs", cascade={"remove"}) * @ORM\JoinColumn(nullable=true) */ private $adresses; // Fix the commandes association too (assuming Commandes is also in EcommerceBundle) /** * @ORM\OneToMany(targetEntity="Ecommerce\EcommerceBundle\Entity\Commandes", mappedBy="utilisateurs", cascade={"remove"}) * @ORM\JoinColumn(nullable=true) */ private $commandes;
3. Typo in ArrayCollection class name
In the Utilisateurs constructor, you misspelled the ArrayCollection namespace as \Doctrines\Common\Collections\ArrayCollection() (extra 's' in Doctrine). This will cause a class not found error later on.
Fix the typo:
public function __construct() { parent::__construct(); // Correct the class name $this->commandes = new \Doctrine\Common\Collections\ArrayCollection(); $this->adresses = new \Doctrine\Common\Collections\ArrayCollection(); }
Once you've applied all these fixes, re-run your generate entities command:
php app/console doctrine:generate:entities EcommerceBundle:UtilisateursAdresses
It should work without throwing that semantic error now.
内容的提问来源于stack exchange,提问作者Yassine Bayoudh

