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

时间:2015-08-19 10:56:49

标签: php symfony doctrine-orm relationships

我希望有人可以对此有所了解,因为它让我发疯。

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

/**
 * @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,名称和描述,以及"品种"表。宠物" table只包含名为" species"和#34;繁殖"这是整数。但是,提交表单时,我收到以下Symfony错误:

  

在关联AppBundle \ Entity \ Pet#species上找到Doctrine \ Common \ Collections \ ArrayCollection类型的实体,但期待AppBundle \ Entity \ Species

但是 - 如果我将@var更改为Species的实体(或品种的品种),我无法在CMS中列出宠物,因为我收到此错误:

  

无法在AppBundle:table:petstable.html.twig第39行的字符串变量(" 1")上访问属性(" name")

我在列表页面中将其分配如下:

<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>

错误引用的第39行是:

<td>{{ pet.species.name|title }}</td>

这也将发生在第40行,因为它无法访问属性&#34; name&#34;关于品种。

任何帮助表示赞赏 - 这真的让我很头疼,而我却无法理解它!

如果有另一个解决这个问题的线程可能我找不到,那么任何与之相关的链接都会很棒。

提前谢谢你 迈克尔

0 个答案:

没有答案