1

トピック名を混乱させて申し訳ありませんが、すぐにそれを書く方法がわかりません;)私はSymfony2にかなり慣れていません。以前は、CodeIgniterで少し作業していました。

私はDBにこのようなものを持っています:

games
devs: 1,2,3 // string

developers
id: 1 | name: Blizzard // int | string
id: 2 | name: Black Isle
id: 3 | name: Bethesda
...

developersによるとすべてを取得したいですdevs。を使用するアイデアはありexplodeますが、Doctrineのクエリビルダーでどのように作成するかはわかりません。誰かアイデアがありますか?

4

1 に答える 1

1

あなたはこのようなことをすることができます:

<?php

$game = $this
    ->getDoctrine()
    ->getRepository('Game')
    ->findOneById($gameId)
;
$developers = $this
    ->getDoctrine()
    ->getRepository('Developer')
    ->findById(explode(',', $game->getDevs()))
;

またはクエリビルダーが必要な場合:

<?php

$game = $this
    ->getDoctrine()
    ->getRepository('Game')
    ->findOneById($gameId)
;
$qb = $this
    ->getManager()
    ->createQueryBuilder()
;
$developers = $qb
    ->select('d')
    ->from('Developer', 'd')
    ->where($qb->expr()->in('d.id', explode(',', $game->getDevs())))
    ->getQuery()
    ->execute()
;

しかし、おそらくより良いアイデアは、代わりに1対多の関係を使用し、それから教義に依存することです;)(その後、教義はいくつかのものをキャッシュすることもできます)

于 2012-12-28T10:45:18.723 に答える