集合中的Symfony实体

时间:2015-05-21 07:03:19

标签: php symfony collections entity

我无法找到任何类似的问题,所以这里有:

我的(订单)流量实体与我的产品实体之间存在多对多关系,但它并未在<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;

有人可以帮助我 - 我被卡住了!

1 个答案:

答案 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);

我希望能帮助你,友善