【发布时间】:2015-05-21 07:03:19
【问题描述】:
我找不到任何类似的问题,所以这里是:
我的(订单)流实体和产品实体之间存在多对多关系,但它没有在<select> 中选择<option>。
所有实体都由 Symfony 自己设置,所以 @ORM\ManyToMany 等应该没问题。
我的controller 有以下行:
$form = $this->createForm(new \FDM\BestilBundle\Type\FlowsType(), $flow)->add('submit', 'submit');
$flow 已从数据库正确填充。
FlowsType 文件有很多字段,代码如下:
->add('product', 'collection', [
'type' => new ProductDropdownType(),
'allow_add' => TRUE,
'allow_delete' => TRUE,
'prototype' => TRUE,
'by_reference' => FALSE,
]
)
FlowsType 中的所有字段均已正确填写,但以下字段除外。
ProductDropdownType 的代码如下:
$builder->add('name', 'entity', [
'class' => 'FDMBestilBundle:Flows',
'property' => 'name',
'by_reference' => false
]);
行数是正确的 - 如果我的多对多 sql 表中有三行,它会显示三行。他们只是没有被选中。
如果我将ProductDropdownType 更改为:
$builder->add('name', 'text');
数据显示得很好 - 所以 db 和everyting 都在工作。除非我想要收集 <select>...
实体中的关系如下:
在流实体中:
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="FDM\BestilBundle\Entity\Product", inversedBy="flow")
* @ORM\JoinTable(name="productsinflows",
* joinColumns={
* @ORM\JoinColumn(name="flow", referencedColumnName="flowId")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="product", referencedColumnName="productId")
* }
* )
*/
private $product;
在产品实体中:
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\ManyToMany(targetEntity="FDM\BestilBundle\Entity\Flows", mappedBy="product")
*/
private $flow;
有人可以帮帮我吗 - 我卡住了!
【问题讨论】:
-
您的意思是您的选择填充了 3 个选项,其中的值为空?我没有得到“他们只是没有被选中”
-
我的意思是选择标签正确地填充了“产品”数据。但未选择选择标签。没有选项标签具有“选定”属性。我的一个流程在多对多表中有三个产品。该页面正确显示三个
select。所有三个select都有产品表中的所有产品。但是这三个都没有 selected 属性。 -
你能用关系更新你的答案吗?
-
@NawfalSerrar - 完成。
-
对我来说看起来是正确的,如果考虑到关系,我不确定集合,我确定如果实体在您的主要类型中没有集合,则应该选择它,但因为它是一个集合和另一种可能不支持的表单类型
标签: php symfony collections entity