Проблема с инструкцией удаления о createQueryBuilder, отсутствует аргумент - PullRequest
0 голосов
/ 30 января 2019

У меня проблема с доктриной.Я тренируюсь в Symfony и получаю сообщение об ошибке с помощью метода ниже.Кажется, причиной является createQueryBuilder.параметр отсутствует, однако я нашел много примеров как своих, поэтому не понимаю, чего не хватает.

public function deleteAdvertWithoutApplications($days)
{
    $dateparam = (new \datetime())->modify('-' . $days . 'day');

    $qb = $this->createQueryBuilder()
        ->delete('Advert', 'a')
        ->where('a.application is EMPTY')
        ->andWhere('a.updatedAt < :dateparam')
        ->setParameter('dateparam', $dateparam);

    $query = $qb->getQuery();
    //$query->getDQL();
    return $query->execute();
}

Этот код выдает следующее:

Warning: Missing argument 1 for Doctrine\ORM\EntityRepository::createQueryBuilder(), called in ... и т. Д.

код поставщика, по-видимому, является причиной

в vendor / doctrine /orm / lib / Doctrine / ORM / EntityRepository.php (строка 79)

/**
     * @param string $alias     
     * @param string $indexBy The index for the from.        
     * @return QueryBuilder     
*/    
public function createQueryBuilder($alias, $indexBy = null)    
{        
    return $this->_em->createQueryBuilder()            
         ->select($alias)            
         ->from($this->_entityName, $alias, $indexBy);    
}

Есть ли у вас сведения о том, что не так?Я использую Doctrine, 2.5.15 и symfony 3.3.18 (php 7).

Заранее спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Спасибо, Педрам !!!

хорошо, это новый код ниже

public function deleteAdvertWithoutApplications($days)
{
    $dateparam = (new \datetime())->modify('-' . $days . 'day');

    $qb = $this->_em->createQueryBuilder();

    $qb->delete('OCPlatformBundle:Advert', 'a')
       ->where('a.applications is EMPTY')
       ->andWhere('a.updatedAt < :dateparam')
       ->setParameter('dateparam', $dateparam);

    $query = $qb->getQuery();

    return $query->execute();
}
0 голосов
/ 30 января 2019

У вас есть ошибка в этой строке

  ->where('a.application is EMPTY')

Используйте это

  ->where('a.application IS  NULL')
...