Php Symfony2如何持久化一个整数,然后引用一个实体
我希望有人能对这件事有所了解,因为它让我发疯 我有一个表单,允许用户添加宠物,并包含物种和品种的选择框。这些字段在pet表中作为整数列出CMS中的数据是必需的,我通过将ID与相应的实体链接来实现这一点,如下所示: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
/**
* @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'”属性时,它似乎才起作用。看起来很奇怪,但我想我能应付。。谢谢