1

很抱歉混淆了主题名称,但我不知道如何尽快编写它;)我对 Symfony2 还是很陌生,早些时候我使用过 CodeIgniter。

我在数据库中有这样的东西:

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()
;

但可能更好的主意是使用一对多关系,然后依赖于学说;)(然后学说也可以缓存一些东西)

于 2012-12-28T10:45:18.723 回答