2016-11-15 115 views
0

我想在我的控制器中加載實體,但不希望實體包含所有字段。我之前使用Jms-Serializer(可以使用組註釋)執行此操作,以避免加載特殊字段。但我在那裏你必須序列化你的對象到JSON/XML等 而我不想它序列化,我只是想組的功能。我搜索這個網站和互聯網,但沒有找到任何解決我的問題。如何在沒有特殊字段的情況下在Symfony中加載實體

希望有人明白我的意思,就有了一個想法:)

+1

我不確定你到底在做什麼,但是從我收集的內容中你可能想看看[實體倉庫](http://symfony.com/doc/current/doctrine/repository 。html) 如果你發佈了一些代碼,那麼人們可能會更容易理解你想要實現的目標 – p3tch

+1

如果你想加載一個實體,你可以從你的實體庫 –

+0

得到一個數組結果(沒有一些字段)我們可以假設你希望它作爲一個對象而不是縮減數組嗎?如果它*是一個對象,爲什麼不忽略你不需要的道具呢?或者只是在實體上創建一個返回所需位數的方法? – DevDonkey

回答

0

有幾個可能的原因:

  1. 使用局部對象(這將提供對象只有指定的屬性會在水合期間填充):http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/partial-objects.html#partial-objects

Th是危險的,你應該特別小心,因爲它看起來像是一個從各個角度來看的滿載實體。你必須知道爲什麼一個字段爲空 - 僅僅因爲它是空的或者因爲它在水合過程中沒有被填充。

  • 不要水合對象,但查詢用於數組作爲水合結果(由再次可以指定想哪個數組鍵取回):http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#array-hydration
  • 將此用於需要大量只讀數據和複雜聯接的性能敏感查詢。但請注意,您沒有任何可以使用Doctrine管理的實體(例如更新,刪除等)。

  • 使用DTO S的都是對象,但不教條管理實體,有一次你可以指定你想獲得水合與新語法什麼:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#new-operator-syntax
  • 基本上和2)一樣的建議,但這次你會得到物體。所以你可以使用你所有的OOP智慧。

  • 創建自己的自定義水化模式 - 在那裏,你可以自己定義企業應如何進行水合:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#custom-hydration-modes
  • 非常先進的水平。只有當你需要一個特殊的保溼模式來滿足多個實體時,纔有用,而且在你需要的時候沒有其他的選擇可以提供性能和質量。

    相關問題