2016-11-23 9 views
1

У меня есть столбец с типом«simple_array»в моем определении схемы:Учение DBAL `simple_array` типа не трансформируется

public function up(Schema $schema) 
{ 
    $users = $schema->createTable('users'); 
    $users->addColumn('id', 'integer', ['unsigned' => true, 
     'autoincrement' => true]); 
    $users->addColumn('email', 'string', ['length' => 100]); 
    $users->addColumn('roles', 'simple_array'); 
    $users->setPrimaryKey(['id']); 
} 

С этим выше кодой, я был в состоянии создать таблицу, как это:

enter image description here

Теперь, где-то в моем коде, я вставил запись для этого users таблицы:

$connection->insert('users', ['email' => '[email protected]', 'roles' => ['admin', 'editor']]); 

Я смог успешно выполнить этот вводный вызов. Но дело в том, что столбец roles не хранится в соответствии с документацией доктрины - see simple_array in Doctrine Types. Вот как это на самом деле хранятся на моей части:

enter image description here

Я проследил основные кодовые доктрины, и я не могу найти какой-либо намек на трансформаторные коды для преобразования этого типа «simple_array» в comma- взорванная строка.

Я работал с доктриной ORM раньше, и это работало нормально. Это что-то, что было реализовано с помощью Doctrine ORM, а не с помощью Doalrine DBAL? Если да, то как это сделать в DBAL? вручную?

Спасибо.

ответ

0

Я думаю, что он находится по адресу: dbal\lib\Doctrine\DBAL\Types\SimpleArrayType.php линия 45-57, функции convertToDatabaseValue и convertToPHPValue.

Возможно, потому, что вы используете низкоуровневые функции (DBAL), он не запускается автоматически. (Таким образом, вам может потребоваться добавить третий параметр здесь) $connection->insert('users', ['email' => '[email protected]', 'roles' => ['admin', 'editor']], ['email' => Type::STRING, 'roles' => Type::SIMPLE_ARRAY]);