使用createQueryBuilder无法正常使用doctrine2中的LIMIT(setMaxResults)更新查询

时间:2014-09-01 12:59:45

标签: php symfony doctrine-orm dql

我有以下代码

$qb = $this->createQueryBuilder('cs')
        ->update()
        ->set('cs.is_active', 1)
        ->where('cs.reward_coupon = :reward_coupon')
        ->setMaxResults($limit)
        ->setParameter('reward_coupon', $rewardCoupon);
$qb->getQuery()->execute(); 

这不会在结果查询中应用LIMIT。

2 个答案:

答案 0 :(得分:1)

setMaxResult()必须是你的最后一个Doctrine语句才能正常工作

示例:

    $qb = $this->createQueryBuilder('cs')
    ->update()
    ->set('cs.is_active', 1)
    ->where('cs.reward_coupon = :reward_coupon')
    ->setParameter('reward_coupon', $rewardCoupon)
    ->setMaxResults($limit);


     return $qb->getQuery()->execute(); 

答案 1 :(得分:-1)

我认为这可能会有所帮助

$limit=50;
$i=0;
$qb = $this->createQueryBuilder('cs')
->update()
->set('cs.is_active', 1)
->where('cs.reward_coupon = :reward_coupon')
->setParameter('reward_coupon', $rewardCoupon)
->setFirstResult($i)
->setMaxResults($limit);
$qb->getQuery()->execute();