php - 具有多个扩展实体的 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;
解决方案
推荐阅读
- laravel - 如何使用 laravelcollective/html 进行本地化
- openlayers - OpenLayers 中的地理位置定价
- sdk - RTOS SDK app_main 在哪里定义为启动函数?
- reactjs - 如何更改 React chartjs-2 图例单击功能以隐藏除单击之外的所有内容?
- amazon-ec2 - R Markdown / Tinytex 安装 / 镜像 / AWS EC2 Windows
- android-studio - Android Studio:从命令行或 gradle 将目录标记为“Sources Root”
- java - 仅在 Gitlab 管道中使用 SpyBean 进行测试失败
- python - 如何使用 BeautifulSoup 提取“div”值?
- c++ - C++ 缓冲区溢出、strcpy、fgets、sprintf 显示运行时错误
- visual-studio-code - Vscode Prettier - 无需删除空行