2015-09-20 5 views
0

Я использую symfony 2.3 и doctrine 2.2. Я создал консольную команду, чтобы вставить некоторые данные в базу данных. Когда я пытаюсь обновить столбец времени с текущей датой, я получаю эту ошибкуdoctrine DateTime не удалось преобразовать в строку

Catchable fatal error: Object of class DateTime could not be converted to string 
in D:\xampp\htdocs\biginfo\vendor\doctrine\orm\lib\Doctrine\ORM\Query\Expr\Comp 
arison.php on line 98 

Command.php

protected function configure() { 
     $this 
       ->setName('biginfo:invoice') 
       ->setDescription('Générer les factures de chaque commercial chaque début du mois') 
     ; 
    } 

    protected function execute(InputInterface $input, OutputInterface $output) { 

     $users = $this->findByRole('ROLE_COMMERCIAL'); 
     // update invoice 
     $this->updateInvoice($users); 
     $this->updateStatus(); 
    } 

    public function updateStatus() { 
     $em = $this->getContainer()->get('doctrine.orm.entity_manager'); 
     $queryBuilder = $em->createQueryBuilder(); 
     $queryBuilder 
       ->update('Biginfo\UserBundle\Entity\User', 'u') 
       ->set('u.nbrBusiness', 0) 
       ->set('u.time', new \DateTime(date('Y-m-d'))); 
     return $queryBuilder->getQuery(); 
    } 

Как я могу это исправить?

+5

Конструктор запросов не принимает 'DateTime' напрямую, поскольку это второй параметр. Вам нужно использовать формат '-> ('Y-m-d H: i: s')' (или любой формат даты, который вы хотите использовать). – Octopoid

ответ

2

Как уже упоминалось в комментариях, вам необходимо преобразовать DateTime в строку. Вы должны использовать функцию DateTime::format('Y-m-d H:i:s'), что-то вроде

new \DateTime->format('Y-m-d H:i:s') должно работать.