Php Symfony2如何持久化一个整数,然后引用一个实体

Php Symfony2如何持久化一个整数,然后引用一个实体,php,symfony,doctrine-orm,relationships,Php,Symfony,Doctrine Orm,Relationships,我希望有人能对这件事有所了解,因为它让我发疯 我有一个表单,允许用户添加宠物,并包含物种和品种的选择框。这些字段在pet表中作为整数列出CMS中的数据是必需的,我通过将ID与相应的实体链接来实现这一点,如下所示: /** * @var \Doctrine\Common\Collections\Collection * * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Species", inversedBy="pet", cascade={"p

我希望有人能对这件事有所了解,因为它让我发疯

我有一个表单,允许用户添加宠物,并包含物种和品种的选择框。这些字段在pet表中作为整数列出CMS中的数据是必需的,我通过将ID与相应的实体链接来实现这一点,如下所示:

/**
 * @var \Doctrine\Common\Collections\Collection
 *
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Species", inversedBy="pet", cascade={"persist"})
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="species", referencedColumnName="id")
 * })
 */
protected $species;

/**
 * @var \Doctrine\Common\Collections\Collection
 *
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Breed", inversedBy="pet", cascade={"persist"})
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="breed", referencedColumnName="id")
 * })
 */
protected $breed;
“物种”表和“品种”表一样包含Id、名称和描述。“pet”表只包含称为“物种”和“品种”的列,它们是整数。但是,在提交表单时,我收到以下Symfony错误:

在关联AppBundle\entity\Pet\species上找到类型为Doctrine\Common\Collections\ArrayCollection的实体,但应为AppBundle\entity\species

但是-如果我将@var更改为物种实体(或$Breed的Breed),我将无法在CMS中列出宠物,因为我得到以下错误:

无法访问AppBundle:tables:petstable.html.twig第39行中字符串变量(“1”)的属性(“名称”)

我在列表页面中分配它,如下所示:

<tbody>
          {% for pet in pets %}
          <tr>
            <td>{{ pet.id }}</td>
            <td>{{ pet.name }}</td>
            <td>{{ pet.species.name|title }}</td>
            <td>{{ pet.breed.name|title }}</td>
            <td>{{ pet.dateAdded|date('Y-m-d')}}</td>
            <td>{% for owner in pet.customer %}
                <a href="{{ path('app_customers_profile', {'id':owner.id}) }}">
                  {{ (owner.firstname ~ ' ' ~ owner.lastname ~ ' ')|e }}
                </a>
                {% else %}
                  No owners found
                {% endfor %}
            </td>
            <td>
                <button class="btn btn-info btn-owner" data-id="{{ pet.id }}" data-toggle="modal" data-target="#bs_modal_small"><i class="fa fa-pencil"></i></button>
            </td>
            <td>
              <a class="btn btn-success" href="{{ path('app_pet_edit',  {'id':pet.id}) }}">Edit</a>
            </td>
          </tr>
            {% else %}
            <td colspan="8">No pets found with given filters, please try another filter.</td>
          {% endfor %}
        </tbody>

{宠物中宠物的百分比%}
{{pet.id}
{{pet.name}
{{pet.species.name | title}}
{{宠物品种名称|头衔}
{{pet.dateAdded}date('Y-m-d')}
{pet.customer%中所有者的%s}
{%else%}
找不到所有者
{%endfor%}
{%else%}
找不到具有给定筛选器的宠物,请尝试其他筛选器。
{%endfor%}
错误所指的第39行是:

<td>{{ pet.species.name|title }}</td>
{{pet.species.name | title}
这也会发生在第40行,因为它也无法访问“品种”上的属性“名称”

感谢您的帮助-这真的让我头疼,我就是想不起来

如果有另一个线程有一个解决这个问题的方法,而我可能还没有找到,那么与这个方法的任何链接也会很好

先谢谢你
Michael

@var
是一个phpDocumentator标签。这与教义无关。教条忽视了这一点。您的错误在某种程度上与
@var
有关,但不是因为教义。你能删除
@var
注释看看会发生什么吗?哦,刚刚注意到“表单提交时”-你能发布相关的代码片段吗?表单代码在哪里?表单处理的控制器代码在哪里?事实上,我想我今天早上可能已经修复了它-但是,只有在FormType.php代码中使用“multiple=>'true'”属性时,它似乎才起作用。看起来很奇怪,但我想我能应付。。谢谢
@var
是一个phpDocumentator标签。这与教义无关。教条忽视了这一点。您的错误在某种程度上与
@var
有关,但不是因为教义。你能删除
@var
注释看看会发生什么吗?哦,刚刚注意到“表单提交时”-你能发布相关的代码片段吗?表单代码在哪里?表单处理的控制器代码在哪里?事实上,我想我今天早上可能已经修复了它-但是,只有在FormType.php代码中使用“multiple=>'true'”属性时,它似乎才起作用。看起来很奇怪,但我想我能应付。。谢谢