У меня проблема с учением. Я тренируюсь на 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).
Заранее спасибо за вашу помощь.






У вас ошибка в этой строке
->where('a.application is EMPTY')
Использовать это
->where('a.application IS NULL')
в этой строке определите свой пакет ->delete('YourBundle:Advert', 'a')
Большое спасибо pedram за вашу помощь, это работает Еще раз спасибо :-)
Спасибо Педрам!!!
хорошо, это новый код ниже
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();
}
Спасибо, но это тот же результат.