很抱歉主题名称令人困惑,但我不知道怎么写它很快;)我对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中编写它。有人有想法吗?
答案 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()
;
但可能更好的想法是使用一对多的关系,然后依赖于学说;)(然后教义也可以缓存一些东西)