我需要獲取Doctrine 2實體的數組表示形式。我發現這個庫 網上,我使用這個類用於此目的:Doctrine class EntitySerializer在每個實體關係上返回null
https://github.com/borisguery/bgylibrary/blob/master/library/Bgy/Doctrine/EntitySerializer.php
的事情是班級工作很好,但問題是,實體 的每一個屬性,它是一個關係另一個實體(多對一)在結果數組的每個字段上的值爲null。
一個真實的例子:
我有實體的人:
<?php
命名實體;
/** * @Entity(repositoryClass = 「庫\ PersonRepository」) */ 類Person {
/**
* @Id @GeneratedValue
* @Column(type="bigint")
* @var integer
*/
protected $id;
/**
* @Column(type="string", length=32)
* @var string
*/
protected $firstname;
/**
* @Column(type="string", length=32, nullable="true")
* @var string
*/
/**
* @ManyToOne(targetEntity="Gender", cascade={"detach"})
* @JoinColumn(name="gender", referencedColumnName="id")
*/
protected $gender;
,我有一個人對象存儲在與性別的分貝(ID- > 1和名稱 - >男性)。 當我使用這個類來那個人對象數組轉換,我得到了這樣的結果:
「ID」: 「1」, 「名字」: 「LH」, 「中間名」: 「」, 「 lastname「:」kbkjbkl「, 」dob「:{ 」date「:」1982-05-25 00:00:00「, 」timezone_type「:3, 」timezone「:」America/New_York「 } , 「home_phone_number」: 「8798798」, 「work_phone_number」: 「987987」, 「cell_phone_number」: 「987987」, 「SSN」: 「98798」, 「電子郵件」: 「kjhlkjlk」, 「性別」:{ 「ID」:無效, 「名」:空 }, 「種族」:{ 「ID」:無效, 「名」:空 }, 「地址」: { 「ID」:無效, 「ADDRESS_LINE1」:空, 「ADDRESS_LINE2」:空, 「城市」:空, 「拉鍊」:空, 「狀態」:空 }, 「婚姻狀況」: { 「id」:null, 「name」:null }
注意突出顯示的性別值(具有空值)。當它應該有1和男性。
我會很感激任何幫助。
我明白了。問題是,當教條從數據庫加載實體時,除非您訪問它,否則不會加載關係。在您訪問其中一個關係時,教義執行查詢並獲取信息。在我的情況下,所有的關係都是空的,因爲從來沒有被訪問過。這種加載方法在教義中稱爲延遲加載。 – slash28cu
創建您自己的答案並接受它。這樣,你的問題就不會得到解決。而且,您創建了兩個問題,您可以在創建後20分鐘內回答問題。也許你應該在發佈之前多搜索一下。 ;-) – mbinette