我有两个表,一个名为Portal,另一个名为Categories,这些表由一个链接表连接,因为这种关系是多对多的。 代码表如下:
班级类别
/**
* @var integer
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
**/
private $id;
/**
* @ManyToMany(targetEntity="Portal")
*/
private $portal;
public function __construct() {
$this->portal = new \Doctrine\Common\Collections\ArrayCollection();
}
...
班级门户
class Portal
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ManyToMany(targetEntity="Categories")
* @JoinTable(name="portal_categories")
*/
private $categories;
public function __construct() {
$this->categories = new \Doctrine\Common\Collections\ArrayCollection();
}
....
我开发了以下内容 在 PortalAdmin :: configureFormFields
中$formMapper
->with('Portal')
->add('name', 'text', array('label' => ' Name'))
->add('description', 'text', array('label' => 'Description'))
->add('webSiteLink', 'text', array('label' => 'Web Site ','required'=> false))
->add('categories', 'sonata_type_collection',array( 'by_reference' => false))
->end();
但是,只显示一个带有弹出窗口的按钮,用于插入新类别,但我需要,只显示带有类别的列表并添加任意数量的类别
当我尝试这个时:
$formMapper
->with('Portal')
->add('name', 'text', array('label' => ' Name'))
->add('description', 'text', array('label' => 'Description'))
->add('webSiteLink', 'text', array('label' => 'Web Site ','required'=> false))
->add('categories', 'sonata_type_model', array('required' => false, 'expanded' => false, 'multiple' => true, 'label' => 'Chose your categories'))
->end();
显示以下错误: Project \ PortalBundle \ Entity \ Categories类的对象无法转换为字符串
答案 0 :(得分:0)
可能对你有帮助。
请更改两个实体的注释。
实体门户:
/**
* @var \Categories
* @ORM\ManyToMany(targetEntity="Categories")
* @ORM\JoinTable(name="portal_Categories",
* joinColumns={@JoinColumn(name="portal_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="cat_id", referencedColumnName="id")}
* )
*/
private $categories;
实体类别:
/**
* @var \Portal
*
* @ORM\ManyToMany(targetEntity="Portal", mappedBy="categories")
*/
private $portals;
我试着用这个:
$formMapper
->with('Portal')
->add('name', 'text', array('label' => ' Name'))
->add('description', 'text', array('label' => 'Description'))
->add('webSiteLink', 'text', array('label' => 'Web Site ','required'=> false))
->add('categories', 'sonata_type_model', array('required' => false, 'expanded' => false, 'multiple' => true, 'label' => 'Chose your categories'))
->end();
可能会有所帮助