2011-09-18 16 views
3

我可以拿到鑰匙和值動態。學說2 findby功能,得到鍵和值

在PHP

,你會:foreach ($array as $key => $value)

,但你可以做到這一點的:

$this->_em->getRepository('Members')->findBy(array('id' =>5)); 

任何方式來獲得這個鍵與他們的價值觀..?

我可以把它變成一個數組做到這一點,並提取它,但我wouldnt得到數組內的任何關聯結果..

我想這樣做,因爲我希望能夠提取所有屬性和值並提取其中的所有其他對象..

回答

2

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";} 

上述將獲取你的實體數組的數組,你可以做任何你想要$鍵的代碼和$值。 希望這有助於...

+0

沒錯這很好,但你有一個解決方案,得到的結果中的所有關聯對象?這只不過拉動的列值... –

+0

您將需要使用取加入您的DQL查詢獲取其他表data.this是裝載works.DQL怎麼偷懶不關聯aware.In學說2是一個ORM和我們需要明確定義許多查詢和學說2變硬許多任務reagrding設置和自動獲取值... –

+0

@afterburner我取使用HYDRATE_OBJECT多個左我的數據連接,從而返回多個對象數組爲每個實體,我的問題得到的是如何知道哪個對象數組是哪個實體。有什麼建議麼 ? –