Проблема с инструкцией по удалению для createQueryBuilder, отсутствует аргумент

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
103
2

Ответы 2

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

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

Использовать это

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

Спасибо, но это тот же результат.

grome55 30.01.2019 13:19

в этой строке определите свой пакет ->delete('YourBundle:Advert', 'a')

pedram shabani 30.01.2019 14:14

Большое спасибо pedram за вашу помощь, это работает Еще раз спасибо :-)

grome55 31.01.2019 13:38

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

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

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();
}

Другие вопросы по теме