4

キーと値を動的に取得できますか?

PHPでは、次のようになります。foreach ($array as $key => $value)

しかし、あなたはこれを行うことができます:

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

これからキーを値とともに取得する方法はありますか?

これは、配列に変換して抽出することで実行できますが、配列内で関連付けの結果を取得することはできません。

このオブジェクトのすべてのプロパティと値を抽出し、その中の他のすべてのオブジェクトも抽出できるようにしたいので、これを実行したいと思います。

4

1 に答える 1

2

私はあなたが今持っているのと同じ問題を抱えていました、そしていくつかの研究の後に私はあなたが興味があるかもしれない解決策を見つけました。あなたが必要とするのはキー/値の連想配列であり、object.findBy()メソッドはエンティティOBJECT.soのみを返しますDQL(doctrineクエリ言語)を使用する必要があります。

//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。水分補給モード

各ハイドレーションモードは、結果がユーザーランドにどのように返されるかについての仮定を行います。さまざまな結果形式を最大限に活用するには、すべての詳細について知っておく必要があります。

さまざまなハイドレーションモードの定数は次のとおりです。Query::HYDRATE_OBJECTQuery :: HYDRATE_ARRAY Query :: HYDRATE_SCALAR Query :: HYDRATE_SINGLE_SCALAR

「クエリビルダー」の詳細については、doctrine2のドキュメントを参照してください。

更新: 関連付けられたエンティティをフェッチするには、フェッチ結合を定義する必要があります。これは、教義のドキュメントで提供されている例です。

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

上記のコードは、エンティティを配列の配列としてフェッチし、$keysと$valuesを使用して好きなことを行うことができます。お役に立てれば...

于 2011-09-18T19:15:04.423 に答える