如何将实体数组传递到实体存储库并运行“ where in”查询?

时间:2018-07-27 12:33:30

标签: symfony doctrine dql php-5.6

我有Plan $plans的数组。 如何将$ plans数组传递给我的成员控制器? 目前,我使用: * @param Plans|array $plan在注释中

    public function findMembersByPlans( $planArray)
    {
        $queryBuilder = $this->createQueryBuilder('m');
        $count = $queryBuilder->select('count(m)')
            ->leftJoin('mp.plan', 'p')
            ->where($queryBuilder->expr()->in('p.plan', ':planArray'))
            ->setParameters(
                [
                    'planArray'=> $planArray,
]);

如何获得会员人数?当我传递1个对象时。以Plan $plan作为参数,一切正常。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

->leftJoin('mp.plan', 'p', Join::WITH, $queryBuilder->expr()->in('p.id', ':planIds'))
->setParameteter('planIds', array_map(
    function (Plan $plan) {
        return $plan->getId();
    }, $planArray
))

然后您可以删除where子句。