Symfony ManyToOne关系形式

时间:2013-02-19 14:19:54

标签: symfony symfony-2.1 symfony-forms

我有两个实体City OneToMany Anagrafic, 我使用字段AnagraficType city(使用隐藏属性,因为手机使用javascript)以这种方式制作表单:

class Anagrafic
{
/**
 * @ORM\ManyToOne(targetEntity="City", inversedBy="anagrafics", cascade={"persist"})
 * @ORM\JoinColumn(name="city_id", referencedColumnName="id")
 */
private $city;
//..
//..
class City
{
/**
 * @ORM\OneToMany(targetEntity="Anagrafic", mappedBy="city", cascade={"persist"})
 */
private $anagrafics;
//...
//...
class AnagraficType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('comune', 'hidden')

当我将表单保存回给我时出现此错误:

Warning: spl_object_hash() expects parameter 1 to be object,
string given in /var/www/MyBusiness0_1/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 1559

我不明白什么是错的!

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您的AnagraficType表单会让您选择一个城市。如果是,您应该使用entity Field Type呈现<select>元素。

顺便说一下,你的映射是错误的:cascade应该在双向关系的反面上定义,即City拥有方{{} 1}} 保存Anagraphic属性。

答案 1 :(得分:0)

https://stackoverflow.com/a/15043485/2036211

这里解决了这个问题,你应该使用DataTransformer。