Php 集合中的Symfony实体
我找不到任何类似的问题,所以这里是: 我的(订单)流实体和我的产品实体之间存在多对多关系,但它没有在Php 集合中的Symfony实体,php,symfony,collections,entity,Php,Symfony,Collections,Entity,我找不到任何类似的问题,所以这里是: 我的(订单)流实体和我的产品实体之间存在多对多关系,但它没有在中选择 所有实体都是由Symfony自己设置的,@ORM\ManyToMany等应该可以 我的控制器具有以下行: $form = $this->createForm(new \FDM\BestilBundle\Type\FlowsType(), $flow)->add('submit', 'submit'); 从数据库正确填充$flow FlowsType文件包含许多字段,其中包含以
中选择
所有实体都是由Symfony自己设置的,@ORM\ManyToMany等应该可以
我的控制器
具有以下行:
$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,
]
)
$builder->add('name', 'entity', [
'class' => 'FDMBestilBundle:Flows',
'property' => 'name',
'by_reference' => false
]);
FlowsType
中的所有字段都已正确填写,以下字段除外
ProductDropdownType
具有以下代码:
->add('product', 'collection', [
'type' => new ProductDropdownType(),
'allow_add' => TRUE,
'allow_delete' => TRUE,
'prototype' => TRUE,
'by_reference' => FALSE,
]
)
$builder->add('name', 'entity', [
'class' => 'FDMBestilBundle:Flows',
'property' => 'name',
'by_reference' => false
]);
行数是正确的-如果我的多对多sql表中有三行,它将显示三行。他们只是没有被选中。
如果我将ProductDropdownType
更改为:
$builder->add('name', 'text');
数据显示的很好,所以数据库和所有的东西都在工作。除非我想要一组
实体中的关系如下所示:
在流实体中:
/**
* @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;
有人能帮帮我吗?我卡住了 您可以在表单中使用查询生成器,这是一个示例: 在查询生成器中,使用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);
我希望能帮助您,友好的您的意思是您的选择中填充了3个值为空的选项?我没有得到“他们只是没有被选中”,我的意思是选择标签正确地填写了“产品”数据。但选择标记未被选中。所有选项标记都没有“selected”属性。我的一个流程在多对多表中有三个产品。页面正确显示三个
选择。所有三个select
都包含products表中的所有产品。但是这三个属性都没有选定的属性。你能用关系更新你的答案吗?@NawfalSerrar-done.在我看来是正确的,我不确定集合是否考虑了关系,我确信,如果实体位于您的主类型中,而没有集合,则应该选择它,但由于它是集合和另一个formtype,因此可能不支持Hi Capt。您的特殊存储文件是什么样子的?你从哪里得到$user对象/变量?我相信这只是他的一段代码,不适合你的代码,但这不是你想要的,你已经有了数据,如果你需要对实体进行特殊查询,可以使用查询生成器,但他想知道的是,对于我的查询,用户对象是一个where close,我的特殊位置是call to set查询结果的类型,它是空的。