Symfony2/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
...

Я хочу добраться весь разработчики согласно devs . У меня есть идея, используя , взрывают , но я понятия не имею, как написать его в Конструкторе запросов Доктрины. У кого-либо есть идея?

1
добавлено
Просмотры: 2
nl ja de

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

но вероятно лучшая идея - использование one-many отношение вместо этого, и полагайтесь на доктрину тогда;) (Тогда доктрина может припрятать некоторый материал про запас также),

1
добавлено
-> findById (взрываются (' ' $game-> getDevs ())) - что я искал, Спасибо!
добавлено автор Tomek Buszewski, источник
symfony
symfony
1 045 участник(ов)

Сообщество Symfony, Symfony Components, Symfony Framework. Вакансии: https://t.me/symfony_careers Официальный slack: https://symfony.com/slack-invite

symfony
symfony
354 участник(ов)