教义通过OneToMany的queryBuilder获取关系ID

时间:2019-10-24 17:30:29

标签: php doctrine symfony4 dql

我开始使用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获取ID的列表

这样做的时候

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)`时)

问题

如何在OneToMany关系上获得Shop.register PK?

我想动态Shops.registers获取ID的列表

0 个答案:

没有答案