Ih有同樣的問題,你現在有一些研究後,我剛剛找到了一個解決方案,你可能會感興趣。你需要的是一個關鍵的數組鍵/ values而不是object.findBy()方法只返回實體OBJECT.so,您將需要使用DQL(原則查詢語言)。
//create a QueryBuilder instance
$qb = $this->_em->createQueryBuilder();
$qb->add('select', 'a')
//enter the table you want to query
->add('from', 'Members a')
->add('where', 'a.id = :id')
//order by username if you like
//->add('orderBy', 'a.username ASC')
//find a row with id=5
->setParameter('id', '5');
query = $qb->getQuery();
//if you dont put 3 or Query::HYDRATE_ARRAY inside getResult() an object is returned and if you put 3 an array is returned
$accounts = $query->getResult(3);
從理論文檔:
13.7.4。水化模式
每個水化模式使得有關結果如何 假設返回給用戶空間。你應該知道所有的細節,使不同結果的格式 盡其用:
爲不同的水化模式的常量是: 查詢:: HYDRATE_OBJECT 查詢:: HYDRATE_ARRAY 查詢:: HYDRATE_SCALAR 查詢:: HYDRATE_SINGLE_SCALAR
要了解更多有關 '查詢設計器',請參閱doctrine2 documentation
更新: 爲了獲取你需要定義取joins.Here關聯的實體是doctrine documentation提供了一個例子:
$dql = "SELECT b, e, r, p FROM Bug b JOIN b.engineer e ".
"JOIN b.reporter r JOIN b.products p ORDER BY b.created DESC";
$query = $entityManager->createQuery($dql);
$bugs = $query->getArrayResult();
foreach ($bugs AS $bug) {
echo $bug['description'] . " - " . $bug['created']->format('d.m.Y')."\n";
echo " Reported by: ".$bug['reporter']['name']."\n";
echo " Assigned to: ".$bug['engineer']['name']."\n";
foreach($bug['products'] AS $product) {
echo " Platform: ".$product['name']."\n";}
echo "\n";}
上述將獲取你的實體數組的數組,你可以做任何你想要$鍵的代碼和$值。 希望這有助於...
沒錯這很好,但你有一個解決方案,得到的結果中的所有關聯對象?這只不過拉動的列值... –
您將需要使用取加入您的DQL查詢獲取其他表data.this是裝載works.DQL怎麼偷懶不關聯aware.In學說2是一個ORM和我們需要明確定義許多查詢和學說2變硬許多任務reagrding設置和自動獲取值... –
@afterburner我取使用HYDRATE_OBJECT多個左我的數據連接,從而返回多個對象數組爲每個實體,我的問題得到的是如何知道哪個對象數組是哪個實體。有什麼建議麼 ? –