如何根据相关 OneToMany 关联中的条件选择一组实体?

我正在使用 Symfony4 并且我有两个实体User和Car.


ACar有一个isRent类型的字段,bool还有一个user_id用于关系的数据库列。


class User

{

    /**

     * @var Collection

     *

     * @ORM\OneToMany(targetEntity="Car", mappedBy="user")

     *

     * @Serializer\Type("ArrayCollection<ListRestAPI\Entity\Cars>")

     * @Serializer\Expose()

     */

    private $cars;

class Car

 {

    /**

     * @var User

     *

     * @ORM\ManyToOne(targetEntity="User", inversedBy="cars")

     */

    private $user;

现在我正在尝试获取所有租用汽车的用户。


我当前的查询获取所有用户,无论他们是否租用汽车。


$query = $this->createQueryBuilder('u')

    ->select()

    ->join('u.cars', 'c')

    ->andWhere(sprintf('%c.is_rent = :isRent', 'c'))

    ->setParameter('isRent', '1')

    ->groupBy('u.id')

    ->addOrderBy('u.id');

如何仅获取User已租用汽车的实体?


摇曳的蔷薇
浏览 181回答 1
1回答

慕尼黑5688855

尝试andWhere()通过以下方式删除您的:->having('c.isRent&nbsp;=&nbsp;1')由于您在查询中使用整数,因此无需使用绑定参数。您还应该删除setParameter().
打开App,查看更多内容
随时随地看视频慕课网APP