Doctrine получает идентификаторы отношений с помощью queryBuilder из OneToMany - PullRequest
0 голосов
/ 24 октября 2019

Я начинаю использовать Symfony 4 и Doctrine.

У меня есть эти сущности с составными ключами :

/**
 * Shops
 *
 * @ORM\Entity
 */
class Shops
{
    /**
     * @var \App\Entity\Registers[]
     *
     * @ORM\OneToMany(targetEntity="Registers", mappedBy="shop")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="shop_id", referencedColumnName="id"),
     *   @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
     * })
     */
    private $registers;
}
/**
 * Registers
 *
 * @ORM\Entity
 */
class Registers
{
    /**
     * @var \App\Entity\Shops
     *
     * @ORM\ManyToOne(targetEntity="Shops", inversedBy="registers")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="shop_id", referencedColumnName="id"),
     *   @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
     * })
     */
    private $shop;
}

Я хочу динамически получить список идентификаторов из Shops.registers

При выполнении

SELECT t, PARTIAL registers.{id} FROM App:Shops t JOIN t.registers

Я получаю сообщение об ошибке The partial field selection of class App\Entity\Registers must contain the identifier

Выполнение

$entityManager
    ->getClassMetadata("App:Shops")
    ->getAssociationMapping('registers');

не возвращает никакой информации о ключах (когда тип ассоциации == ONE_TO_MANY (4) `)

Вопрос

Как получить Shop.register PK на OneToManyотношение?

Я хочу динамически получить список идентификаторов из Shops.registers

...