【发布时间】:2016-12-10 02:17:40
【问题描述】:
我正在使用原则将某些对象映射到数据库表。 这就是我现在拥有的:
使用 Doctrine\ORM\Mapping 作为 ORM;
/**
* @ORM\Entity
* @ORM\Table(name="account")
*/
abstract class Account{
/**
* @ORM\Id
* @ORM\Column(type="string")
*/
private $username;
/**
* @ORM\Id
* @ORM\Column(type="string")
*/
private $password;
/*Getters and setters*/
}
/**
* @ORM\Entity
* @ORM\Table(name="player")
*/
abstract class Player extends Account{
/**
* @ORM\Id
* @ORM\Column(type="integer")
*/
private $number;
/*Getters and setters*/
}
/**
* @ORM\Entity
* @ORM\Table(name="coach")
*/
abstract class Coach extends Account{
/**
* @ORM\Id
* @ORM\Column(type="integer")
*/
private $experience;
/*Getters and setters*/
}
这样,所有具体类都将具有用户名和密码列,如果我只需要存储用户名以便以后能够加入它们并取回 oconcrete 对象怎么办?提前致谢。
【问题讨论】:
-
无法理解您的需求,但映射的超类可能会有所帮助:docs.doctrine-project.org/projects/doctrine-orm/en/latest/…
-
我需要保存 Account Class 和子类的原因是因为稍后我需要让他们交换一些消息,并且我很难创建一个包含发送者和接收者字段的消息实体帐户表中用户名的 2 个外键。
-
我只能说您似乎过于关注数据库设计,即反复提及外键和表。 Doctrine 是一个 ORM,旨在抽象出实际的持久性过程。设计您的实体以适合您的用例,然后担心数据库映射。
标签: orm doctrine abstract-class symfony