2014-10-31 2 views
2

У меня есть Entity, который имеет поле массива, как это:доктрина не хранит ArrayCollection

... 
    /** 
    * @var array 
    * 
    * @ORM\Column(name="tels", type="json_array") 
    */ 
    private $tels; 
... 

я заполнить это, используя форму, и он заполняет правильно, так как после того, как отправить var_dump($entity->getTels()) возвращает это:

object(Doctrine\Common\Collections\ArrayCollection)[448] 
    private '_elements' => 
    array (size=1) 
     0 => string '123' (length=3) 

Но после сохранения доктрины игнорирует это значение поля и сохраняет пустой массив:

+----+------+ 
| id | tels | 
+----+------+ 
| 1 | {} | 
+----+------+ 

В чем проблема?

+0

Вы писали * Doctorine * в названии. –

+0

Какую версию Учения вы используете? – Chausser

+0

@Chausser: Привет ;-) | v2.4.6 – RYN

ответ

2

Тип json_array ожидает массив, который затем будет преобразован в json с помощью json_encode. Хотя Doctrine ArrayCollection технически проходит, он не красиво бросается в массив. Таким образом, вам необходимо либо позвонить ->toArray() на него или изменить тип, чтобы быть просто array

$entity->setTels($theArrayCollection->toArray()); 
Смежные вопросы