Symfony2 / Doctrine - 根据另一个表从一个表中获取所有值

时间:2012-12-28 10:05:59

标签: symfony doctrine

很抱歉主题名称令人困惑,但我不知道怎么写它很快;)我对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的Query Builder中编写它。有人有想法吗?

1 个答案:

答案 0 :(得分: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()
;

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