EasyAdmin和Symfony关系的问题一对多

时间:2017-05-12 17:00:55

标签: symfony-3.2 symfony2-easyadmin

大家。

我遇到了Easy Admin的问题以及Symfony处理的一对多关系。我目前拥有的三个实体是用户,产品和类别。

当我将关系放在产品和类别上时,当我尝试在Easy Bundle的管理部分添加新类别时出现此错误:

Catchable Fatal Error: Object of class AppBundle\Entity\Product could not be converted to string

以下是我的同事在产品和类别类中看到的内容,它们基本上是直接从Symfony文档中复制的。

产品类别

/**
 * @ORM\ManyToOne(targetEntity="Category", inversedBy="products")
 * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
 */
private $category;

以下是类别结尾的关联:

...
use Doctrine\Common\Collections\ArrayCollection;

/**
 * @ORM\OneToMany(targetEntity="Product", mappedBy="category")
 */
private $products;

public function __construct()
{
    $this->products = new ArrayCollection();
}

我认为正在发生的主要问题是它们在产品表中没有类别字段,这使Easy Bundle感到困惑,因为它似乎依赖于类属性。

如果有人可以就如何解决这个问题提出建议,那就太棒了。或者,如果您知道可能存在此问题的黄油管理包,那也会很棒。

此外,如果您有使用Easy Admin Bundle的经验,您是否建议开发人员自己创建。因为我确实看到了这个Bundle的其他问题,例如能够在Products新表单上列出类别名称,因为Symfony似乎只记录category_id而不是名称。我不能按名称列出类别,只是id号码。我想列出不同的类别名称。

任何建议或帮助都会很棒。

1 个答案:

答案 0 :(得分:2)

我也遇到了这个错误。只需向Product实体添加__toString()魔术方法:

class Product {
    ...

    public function __toString()
    {
        return $this->title; // <-- add here a real property which
    }                        //     describes your product