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查询结果的类型,它是空的。