我无法找到任何类似的问题,所以这里有:
我的(订单)流量实体与我的产品实体之间存在多对多关系,但它并未在<option>
中选择<select>
。
所有实体都是由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;
有人可以帮助我 - 我被卡住了!
答案 0 :(得分:1)
您可以在表单中使用查询构建器,这是一个例子: 在查询构建器中,使用DQL
创建SQL查询->add('espece', 'entity', array(
'class' => 'ADMapecheBundle:Espece',
'property' => 'nom',
'multiple' => false,
'query_builder' => function(EspeceRepository $er) use ($user) {
return $er->createQueryBuilder('p')
->where("p.user = :user")
->orderBy('p.nom', 'ASC')
->setParameter('user', $user);
我希望能帮助你,友善