我对教义有问题。我正在训练到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 DoctrineORMEntityRepository::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')
感谢佩德拉姆!!
好的,这是下面的新代码
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();
}