$shops = $this->em->getRepository('models\Shop')->findAll();
的陣列能夠提供我與實體的數組,但我需要的實體陣列。轉換查詢的結果陣列
如何將實體轉換爲數組?
$shops = $this->em->getRepository('models\Shop')->findAll();
的陣列能夠提供我與實體的數組,但我需要的實體陣列。轉換查詢的結果陣列
如何將實體轉換爲數組?
我有同樣的問題。 return get_object_vars($this)
不是一個好的解決方案,因爲它也轉換內部學說對象/屬性。經過一番研究,我發現這個類:EntitySerializer它從你的實體創建乾淨的數組或JSON,並刪除不必要的items.The文檔位於here。例如,我用下面的代碼:
$patientProfile = $this->em->getRepository('Entities\Patientprofile')->findOneByuserid('2222222');
$entitySerializer=new Bgy\Doctrine\EntitySerializer($this->em);
$patientProfile=$entitySerializer->toArray($patientProfile);
主義讓你執行查詢,這讓我們在指定的水化模式更改返回結果的數據類型。在這種情況下,您需要Query :: HYDRATE_ARRAY。它不允許您在存儲庫上的默認findAll()方法中指定此方法。你需要爲它編寫你自己的DQL。
如果你需要的entites的集合作爲數組:
$query = $em->createQuery('SELECT u FROM User u');
$entites = $query->execute(array(), Query::HYDRATE_ARRAY);
// If you don't have parameters in the query, you can use the getResult() shortcut
$query = $em->createQuery('SELECT u FROM User u');
$entities = $query->getResult(Query::HYDRATE_ARRAY);
如果你需要一個單一的實體作爲數組,例如。特定ID:
$query = $em->createQuery('SELECT u FROM User u WHERE u.id = ?1');
$query->setParameter(1, $id);
$entity = $query->getSingleResult(Query::HYDRATE_ARRAY);
這些方法上Query,和AbstractQuery限定。
但是這使得與抽象的EntityRepository-> findAll()方法一起使用是不可能的。 –
*作爲數組的實體*實體如何看起來像以及數組將如何看起來像? – hakre