2015-12-18 4 views
0

Я работаю с моей базой данных уже месяц. Вдруг я начал получать ошибку:Symfony2, Doctrine, fixtures, Array to string conversion

[Symfony\Component\Debug\Exception\ContextErrorException] 
Notice: Array to string conversion 

, при погрузке приспособлений. Наконец, я удалил всю базу данных, повторные миграции, оставил только 1 файл fixtures (таким образом, я прокомментировал наш OrderedFIxturesInterface и, конечно же, я очистил кеш, но ошибка остается). C: \ Bitnami \ wampstack-5.5.30-0 \ sym_prog \ proj2_27 \ SRC \ MeetingBundle \ DataFixtures \ ORM \ LoadUsers01.php

<?php 

namespace MeetingBundle\DataFixtures\ORM; 

use Doctrine\Common\DataFixtures\FixtureInterface; 
use Doctrine\Common\Persistence\ObjectManager; 
use MeetingBundle\Entity\User; 
use Doctrine\Common\DataFixtures\AbstractFixture; 
use Doctrine\Common\DataFixtures\OrderedFixtureInterface; 

class LoadUsers01 extends AbstractFixture 
#implements OrderedFixtureInterface 
{ 
    public function load(ObjectManager $manager) 
    { 
     for ($i = 1; $i <= 10; $i++) { 
      $fuser = new User(); 
      $fuser->setUsername('name'.$i); 
      $fuser->setEmail('g.statkute'.$i.'@gmail.com'); 
      $fuser->setIsActive(True); // i also used 1 
      $fuser->setPassword('pswd'.$i); 
      $manager->persist($fuser); 
      # $this->addReference('fuser:name'.$i, $fuser); 
     } 

     $manager->flush(); 
    } 

     public function getOrder() 
    { 
     return 1; 
    } 
} 

.

C: \ Bitnami \ wampstack-5.5.30-0 \ sym_prog \ proj2_27 \ SRC \ MeetingBundle \ Entity \ User.php

.. 
/** 
* User 
* 
* @ORM\Table(name="tuser") 
* @ORM\Entity() 
*/ 
class User implements AdvancedUserInterface, \Serializable 
.. 
    /** 
    * @var string 
    * 
    * @ORM\Column(name="username", type="string", length=255, unique=true) 
    */ 
    private $username; 

    /** 
    * @ORM\Column(name="email", type="string", nullable=true, unique=true) 
    * 
    * @var string 
    */ 
    private $email; 

    /** 
    * @var bool 
    * 
    * @ORM\Column(name="is_active", type="boolean") 
    */ 
    private $isActive; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="password", type="string", length=255, unique=true) 
    */ 
    private $password; 

.. 

/** 
    * Set username 
    * 
    * @param string $username 
    * 
    * @return User 
    */ 
    public function setUsername($username) 
    { 
     $this->username = $username; 

     return $this; 
    } 
    /** 
    * @param string $email 
    * @return User 
    */ 
    public function setEmail($email) 
    { 
     $this->email = $email; 

     return $this; 
    } 

    /** 
    * @param boolean $isActive 
    */ 
    public function setIsActive($isActive) 
    { 
     $this->isActive = $isActive; 
    } 

    /** 
    * Set password 
    * 
    * @param string $password 
    * 
    * @return User 
    */ 
    public function setPassword($password) 
    { 
     $this->password = $password; 

     return $this; 
    } 

Таблица содержит VARCHAR поля кроме TINYINT для булевой IsActive. Существует только одна таблица с именами пользователей.

-- 
-- Table structure for table `tuser` 
-- 

CREATE TABLE IF NOT EXISTS `tuser` (
    `id` int(11) NOT NULL, 
    `username` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `password` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `phone` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
    `roles` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `is_active` tinyint(1) NOT NULL, 
    `gravatar` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `webpages` longtext COLLATE utf8_unicode_ci NOT NULL COMMENT '(DC2Type:json_array)', 
    `createdAtInt` decimal(10,0) DEFAULT NULL, 
    `loggedInInt` decimal(10,0) DEFAULT NULL, 
    `loggedOutInt` decimal(10,0) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

-- 
-- Indexes for dumped tables 
-- 

-- 
-- Indexes for table `tuser` 
-- 
ALTER TABLE `tuser` 
    ADD PRIMARY KEY (`id`), 
    ADD UNIQUE KEY `UNIQ_66A7B847F85E0677` (`username`); 

VERBOSE ОШИБКА:

c:\Bitnami\wampstack-5.5.30-0\sym_prog\proj3_27>php app/console doctrine:fixture 
s:load -vv 
[2015-12-18 05:45:10] event.DEBUG: Notified event "console.command" to listener 
"Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". 

[2015-12-18 05:45:10] event.DEBUG: Notified event "console.command" to listener 
"Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand". 
[2015-12-18 05:45:10] event.DEBUG: Notified event "console.command" to listener 
"Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand". 
Careful, database will be purged. Do you want to continue y/N ?y 
    > purging database 
    > loading [1] MeetingBundle\DataFixtures\ORM\LoadUsers01 



    [Symfony\Component\Debug\Exception\ContextErrorException] 
    Notice: Array to string conversion 



Exception trace: 
() at C:\Bitnami\wampstack-5.5.30-0\sym_prog\proj3_27\vendor\doctrine\dbal\lib\ 
Doctrine\DBAL\Driver\PDOStatement.php:67 
Symfony\Component\Debug\ErrorHandler->handleError() at n/a:n/a 
PDOStatement->bindValue() at C:\Bitnami\wampstack-5.5.30-0\sym_prog\proj3_27\ve 
ndor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOStatement.php:67 
Doctrine\DBAL\Driver\PDOStatement->bindValue() at C:\Bitnami\wampstack-5.5.30-0 
\sym_prog\proj3_27\vendor\doctrine\dbal\lib\Doctrine\DBAL\Statement.php:120 
Doctrine\DBAL\Statement->bindValue() at C:\Bitnami\wampstack-5.5.30-0\sym_prog\ 
proj3_27\vendor\doctrine\orm\lib\Doctrine\ORM\Persisters\Entity\BasicEntityPersi 
ster.php:277 
Doctrine\ORM\Persisters\Entity\BasicEntityPersister->executeInserts() at C:\Bit 
nami\wampstack-5.5.30-0\sym_prog\proj3_27\vendor\doctrine\orm\lib\Doctrine\ORM\U 
nitOfWork.php:1018 
Doctrine\ORM\UnitOfWork->executeInserts() at C:\Bitnami\wampstack-5.5.30-0\sym_ 
prog\proj3_27\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php:378 
Doctrine\ORM\UnitOfWork->commit() at C:\Bitnami\wampstack-5.5.30-0\sym_prog\pro 
j3_27\vendor\doctrine\orm\lib\Doctrine\ORM\EntityManager.php:356 
Doctrine\ORM\EntityManager->flush() at C:\Bitnami\wampstack-5.5.30-0\sym_prog\p 
roj3_27\src\MeetingBundle\DataFixtures\ORM\LoadUsers01.php:32 
MeetingBundle\DataFixtures\ORM\LoadUsers01->load() at C:\Bitnami\wampstack-5.5. 
30-0\sym_prog\proj3_27\vendor\doctrine\data-fixtures\lib\Doctrine\Common\DataFix 
tures\Executor\AbstractExecutor.php:121 
Doctrine\Common\DataFixtures\Executor\AbstractExecutor->load() at C:\Bitnami\wa 
mpstack-5.5.30-0\sym_prog\proj3_27\vendor\doctrine\data-fixtures\lib\Doctrine\Co 
mmon\DataFixtures\Executor\ORMExecutor.php:83 
Doctrine\Common\DataFixtures\Executor\ORMExecutor->Doctrine\Common\DataFixtures 
\Executor\{closure}() at n/a:n/a 
call_user_func() at C:\Bitnami\wampstack-5.5.30-0\sym_prog\proj3_27\vendor\doct 
rine\orm\lib\Doctrine\ORM\EntityManager.php:233 
Doctrine\ORM\EntityManager->transactional() at C:\Bitnami\wampstack-5.5.30-0\sy 
m_prog\proj3_27\vendor\doctrine\data-fixtures\lib\Doctrine\Common\DataFixtures\E 
xecutor\ORMExecutor.php:85 
Doctrine\Common\DataFixtures\Executor\ORMExecutor->execute() at C:\Bitnami\wamp 
stack-5.5.30-0\sym_prog\proj3_27\vendor\doctrine\doctrine-fixtures-bundle\Comman 
d\LoadDataFixturesDoctrineCommand.php:118 
Doctrine\Bundle\FixturesBundle\Command\LoadDataFixturesDoctrineCommand->execute 
() at C:\Bitnami\wampstack-5.5.30-0\sym_prog\proj3_27\vendor\symfony\symfony\src 
\Symfony\Component\Console\Command\Command.php:256 
Symfony\Component\Console\Command\Command->run() at C:\Bitnami\wampstack-5.5.30 
-0\sym_prog\proj3_27\vendor\symfony\symfony\src\Symfony\Component\Console\Applic 
ation.php:846 
Symfony\Component\Console\Application->doRunCommand() at C:\Bitnami\wampstack-5 
.5.30-0\sym_prog\proj3_27\vendor\symfony\symfony\src\Symfony\Component\Console\A 
pplication.php:189 
Symfony\Component\Console\Application->doRun() at C:\Bitnami\wampstack-5.5.30-0 
\sym_prog\proj3_27\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Con 
sole\Application.php:96 
Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at C:\Bitnami\wamps 
tack-5.5.30-0\sym_prog\proj3_27\vendor\symfony\symfony\src\Symfony\Component\Con 
sole\Application.php:120 
Symfony\Component\Console\Application->run() at C:\Bitnami\wampstack-5.5.30-0\s 
ym_prog\proj3_27\app\console:27 
+0

Из 25 вопросов у вас еще нет ответа. Странный. – Cerad

+0

Я удалил еще раз всю базу данных и все миграции - возможно, причина в том, что у меня были старые миграции. Регенерировало все, начиная с нуля, предоставляя пользовательские имена для таблиц. Очищенный кеш. Но чем я пытаюсь загрузить User fixtures, я получаю сообщение об ошибке: [Symfony \ Component \ Debug \ Exception \ ContextErrorException] Примечание. Преобразование массива в строку – olga

+0

Когда я обновил композитор. – olga

ответ

0

Проблема была с полем ролей, которые я изменил вчера вечером в строку вместо массива. Но я забыл удалить инициализацию $ role = array();

/** 
* @var string 
* 
* @ORM\Column(name="roles", type="string", nullable=true) 
*/ 
private $roles; // it was $roles= array(); 

Таким образом, если вы видите эту ошибку, поиск ключевого слова «массив» в соответствующих файлах и проверить, если задана переменная должна быть равна массив, и т.д ..

Это четвертый раз, когда я переделали весь проект из-за простой ошибки. Вывод заключается в том, что лучше думать, где может быть ошибкой. С другой стороны, когда доктрина не порождала кролик, помогала переустановка проекта с другой версией Symfony. частные $ role; // = array();