テーブルを結合しています。私は、結合に基づいて多次元のクエリ結果を得たいと思います。多次元配列の結果の結合
# AppBundle:ProductRepository
$this->createQueryBuilder('pr')
->select('pk.id', 'pk.name', 'pr.id', 'pr.label')
->join('pr.package', 'pk')
->getQuery()->getResult();
あなたがProduct
を見ることができるようにPackage
ここ
array(
array('id' => '1', 'name' => 'package 1', 'id1' => 1, 'label' => 'product 1'),
array('id' => '1', 'name' => 'package 1', 'id1' => 2, 'label' => 'product 2'),
array('id' => '2', 'name' => 'package 2', 'id1' => 3, 'label' => 'product 3'),
)
は私がしたいです好きになる:
array(
array(
'id' => '1',
'name' => 'package 1',
'products' => array(
array(
'id' => 1,
'label' => 'product 1',
),
array(
'id' => 2,
'label' => 'product 2',
),
),
),
array(
'id' => '2',
'name' => 'package 2',
'products' => array(
array(
'id' => 3,
'label' => 'product 3',
),
),
),
)
この種の多次元配列を水和する方法はありますかドクトリン2?
私は教義2と、いないと "ポストPROD" PHPは
これは本当に面白いです。しかし、あなたの例は、 'packages'の代わりに' packages'の代わりに 'products'を' products'でリストアップしています。どうすれば元に戻せますか? –
@PierredeLESPINAY正確なDB構造を持っていないので、実際の例を再現するのは難しいです。しかし、それは実際には本当に簡単です。必要なすべてのデータを選択して結合する* normal * dql文をどのように書くか考えてみてください。そこから、部分構文と配列のハイドレーションを使用して、必要な値だけに減らします。 – Yoshi
別のことは、間違ったリポジトリにいるようだと思われるかもしれません。ルートエイリアス 'pr'を使ってクエリビルダーを作成しますが、' pk'で始まります。この方法でクエリービルダーを作成すると*暗黙的に* dqlの 'FROM'部分が設定されます。 – Yoshi