Doctrine ODM(MongoDB)-获取对象的完整数组?
|
iv收到我的文档的完整数组(包含嵌入式childs集合和对象的所有数据)时遇到问题。我的文档看起来像这样:
use Doctrine\\Common\\Collections\\ArrayCollection;
/** @Document(collection=\"user\") */
class User {
/** @Id */
protected $id;
/** @String */
protected $firstname;
/** @String */
protected $lastname;
/** @EmbedMany(targetDocument=\"Email\") */
protected $email;
/** @EmbedMany(targetDocument=\"Address\") */
protected $address;
/** @EmbedMany(targetDocument=\"Subscription\") */
protected $subscription;
/**
* Construct the user
*
* @param array $properties
* @throws User_Exception
*/
public function __construct(array $properties = array()) {
$this->email = new ArrayCollection();
$this->address = new ArrayCollection();
$this->subscription = new ArrayCollection();
foreach($properties as $name => $value){
$this->{$name} = $value;
}
}
...
我需要一个完整的嵌入式集合数组,以输出整个数据并通过json呈现。我的查询如下所示:
$query = $this->_dbContainer->getDocumentManager()->createQueryBuilder(\'User\')->field(\'deletedAt\')->exists(false);
$result = $query->field(\'id\')->equals($id)->getQuery()->getSingleResult();
例如,如果我这样调用toArray()
函数:
$array = $result->getSubscription()->toArray();
print_r($array);
然后输出ist只是顶层的一个数组:
[0] => Object Subscription...
[1] => Object Subscription...
...
我如何轻松获得这样的数组?
[0] => array(\'subscriptionLabel\' => \'value1\', \'field\' => \'value1\', ...)
[1] => array(\'subscriptionLabel\' => \'value2\', \'field\' => \'value2\', ...)
...
是否有任何最佳做法或可能缺少一些帮助程序脚本来防止类似此代码的丑陋行为(如何处理child-> child-> child szenarios?ugly-> ugly ugly-> ugly ugly ugly-> ...):
$example = array();
foreach($result->getSubscription() as $key => $subscription) {
$example[$key][\'subscriptionLabel\'] = $subscription->getSubscriptionLabel();
$example[$key][\'field\'] = $subscription->getField();
...
}
非常感谢,
史蒂芬
没有找到相关结果
已邀请:
4 个回复
锯康
蓄荣糖些
现在,我可以使用json_encode($ doc)将实体序列化为数组或json字符串。 am
场竟矩喘崩
献导外拘