簡體   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