繁体   English   中英

主义ORM-如何持久化静态属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM