Я обновляюсь с Symfony 1.4 до Symfony 2.6.4 и не могу понять, как настроить поле формы для хранения набора вариантов (кажется достаточно простым) из сохраненного объекта. Я получаю сообщение об ошибке при создании моей схемы.Ошибка настройки поля для хранения массива флажков
Код:
<?php
namespace PlantBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class PlantForm extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('propagationMethod', 'entity', array(
'class' => 'PlantBundle:PropagationMethod',
'property' => 'name',
'expanded' => true,
'multiple' => true,
'required' => false,
'label' => 'Propagation Methods',
'attr' => array(
'class' => 'checkboxes'
)));
}
}
<?php
namespace PlantBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity(repositoryClass="PlantBundle\Entity\Repository\PlantRepository")
* @ORM\Table(name="plant")
* @ORM\HasLifecycleCallbacks
*/
class Plant
{
# ...
/**
* @ORM\Column(type="array", nullable=true)
*/
protected $propagationMethodIds;
/**
* @ORM\ManyToOne(targetEntity="PlantBundle\Entity\PropagationMethod")
* @ORM\JoinColumn(name="propagationMethodIds", referencedColumnName="id")
*/
protected $propagationMethod;
# ...
public function __construct()
{
$this->propagationMethod = new ArrayCollection();
}
# ...
}
Сообщение об ошибке при создании схемы:
[PDOException]
SQLSTATE [42000]: Синтаксическая ошибка или нарушение прав доступа: 1170 BLOB/TEXT столбец 'propagationMethodIds' используется в ключевая спецификация без длины ключа
Я попытался добавить длину = 255 в поле, но все равно получить ошибку. Из исследования, которое я предпринял для устранения неполадки, кажется, что поле индексируется, и поскольку это капля, ему требуется указанная длина. Но поле представляет собой массив идентификаторов из связанной таблицы. Confused:/