[英]Doctrine ORM - How to persist static properties
我已经使用Doctrine ORM一段时间了,我有一个类级别的属性( 静态属性),需要将其持久保存在MySQL数据库中,现在我想怎么做。
Class Student {
private $name;
public static $instances = array();
public __construct($name) {
$this->name = $name;
self::$instances[] = $this->name;
}
}
将PHP类标记为实体后的下一步是将其属性映射到表中的列。
要配置属性,请使用
@Column
docblock批注。 type属性指定要用于该字段的学说映射类型。 如果未指定类型,则将string用作默认值。
听起来像学说只支持对象级属性。 但是,标题显示为“ 基本映射 ”时,我认为应该有某种类型的“ 高级映射 ”可能涵盖静态属性。 我搜索没有成功。
此外,它也未在“ 限制和已知问题”中列出
有人请让我知道这是否可以在Doctrine 2中保留静态属性 ,如果不能,我应如何完成此任务? 有什么解决方法吗?
不幸的是,我的声誉不允许发表评论,因此我必须将此作为答案。 抱歉
我的第一个想法是您会以错误的方式进行操作。 您能否提供更多有关“实例”实际上是什么的信息? 看起来这是系统中所有学生姓名的列表? 为什么需要将此作为静态类属性?
一些想法:
1)
听起来像学说只支持对象级属性。
是的,我认为这是正确的,但是我看不到其他任何用例。 在我看来,将静态数据存储在数据库中在直觉上是错误的,因为它并不是(经常)更改的。 您不能只在代码中或配置文件中存储值(如果太多)。 另一方面,如果您的数据经常更改,则它不是静态的(<=>不变)。
2)如果您真的要映射它并将其保存在数据库中,我相信关联映射是必经之路(一对多或多对多)。 即,您应该将其移至与学生实体有关系的自己的实体。 在您的情况下,您似乎应该创建一个包含所有学生列表的大学实体。 这样,您就可以迭代建立所有名称的列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.