首页 > 解决方案 > 具有多个扩展实体的 Symfony 唯一实体 ORM 错误别名

问题描述

我有 3 个实体:BaseUser、User、Children。User 和 Children 扩展了主要的 BaseUser 实体。基本上,当父母注册到网页时,他可以添加多个用户(孩子)。提交表单时,“UniqueEntity”应检查数据库中是否存在电子邮件。但是现在它返回一个错误,因为别名不正确。

An exception occurred while executing 'SELECT t1.id AS id_2, t1.email AS email_3, t1.roles AS roles_4, t1.password AS password_5, t1.name AS name_6, t1.surname AS surname_7, t1.phone AS phone_8, t1.city AS city_9, t1.street AS street_10, t1.flat AS flat_11, t1.building AS building_12, t1.post_code AS post_code_13, t1.created_at AS created_at_14, t1.updated_at AS updated_at_15, t1.gym AS gym_16, t1.benefits AS benefits_17, t1.shirt_size AS shirt_size_18, t1.short_size AS short_size_19 FROM user t1 WHERE t0.email = ?' with params ["tevas8@enternet.lt"]:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.email' in 'where clause'

如您所见,别名是 t1,但由于某种原因,WHERE 子句试图访问别名 t0。我知道这是因为扩展类,但我不知道如何解决这个问题,以便别名始终匹配。

基本用户.php:

/**
 * @ORM\Entity(repositoryClass=BaseUserRepository::class)
 * @ORM\Table(name="user")
 * @UniqueEntity("email")
 * @ORM\HasLifecycleCallbacks()
 */
class BaseUser implements UserInterface, PasswordAuthenticatedUserInterface
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private ?int $id;

    /**
     * @ORM\Column(type="string", length=180, unique=true)
     * @Assert\NotBlank
     */
    private ?string $email;

用户.php:

/**
 * @ORM\Entity(repositoryClass=BaseUserRepository::class)
 * @ORM\Table(name="user")
 * @ORM\Entity
 */
class User extends BaseUser implements UserInterface, PasswordAuthenticatedUserInterface
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private ?int $id;

Children.php

/**
 * @ORM\Entity(repositoryClass=BaseUserRepository::class)
 * @ORM\Table(name="user")
 * @ORM\Entity
 */
class Children extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private ?int $id;

标签: phpsymfonydoctrine-orm

解决方案


推荐阅读