gpt4 book ai didi

php - 交响乐 : Ordering Entity Type Form by entity relation

转载 作者:行者123 更新时间:2023-12-02 15:21:34 25 4
gpt4 key购买 nike

我想在 symfony 中制作一个选择表单,其中条目按关系排序(我有一个具有多对一关系的客户端实体)。该表格应按企业对每个客户进行排序。

这是我的客户实体

/**
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="MyBrowserBundle\Entity\UserRepository")
*/
class User
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @ORM\ManyToOne(targetEntity="MyBrowserBundle\Entity\Enterprise", inversedBy="user", cascade={"persist"})
* @ORM\JoinColumn(nullable=false)
*/
private $enterprise;

//Some data

// Setter Getter

/**
* Set enterprise
*
* @param \MyBrowserBundle\Entity\Enterprise $enterprise
* @return User
*/
public function setEnterprise(\MyBrowserBundle\Entity\Enterprise $enterprise)
{
$this->enterprise = $enterprise;

return $this;
}

/**
* Get enterprise
*
* @return \MyBrowserBundle\Entity\Enterprise
*/
public function getEnterprise()
{
return $this->enterprise;
}
public function __construct() {
//Some code
}
}

和我的企业实体

/**
* @ORM\Table(name="enterprise") *@ORM\Entity(repositoryClass="MyBrowserBundle\Repository\EnterpriseRepository")
*/
class Enterprise
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;

/**
* @ORM\OneToMany(targetEntity="MyBrowserBundle\Entity\User", mappedBy="enterprise", cascade={"persist"})
*/
private $user;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}

/**
* Set name
*
* @param string $name
* @return Enterprise
*/
public function setName($name)
{
$this->name = $name;

return $this;
}

/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Constructor
*/
public function __construct()
{
$this->user = new \Doctrine\Common\Collections\ArrayCollection();
}

/**
* Add user
*
* @param \MyBrowserBundle\Entity\User $user
* @return Enterprise
*/
public function addUser(\MyBrowserBundle\Entity\User $user)
{
$this->user[] = $user;
//$user->setEnterprise($this);

return $this;
}

/**
* Remove user
*
* @param \MyBrowserBundle\Entity\User $user
*/
public function removeUser(\MyBrowserBundle\Entity\User $user)
{
$this->user->removeElement($user);
}

/**
* Get user
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getUser()
{
return $this->user;
}
}

我正在使用一个像这样的选择类型的二维数组($fullArray 是二维数组):

$formSearch = $this->createFormBuilder($fullArray)
->add('List', 'choice', array(
'choices' => $fullArray,
'choice_attr' => function($fullArray, $key, $index) {
return ['class' => 'category_'.$key];
},
))
->add('search', 'submit')
->getForm();
$formSearch->handleRequest($request);

问题是当 twig 渲染表单时,所有数据都是混合的。

还有其他方法吗? (使用 EntityType ?)我是 Symfony 2 的新手

谢谢

最佳答案

所以,我已经将我的 formBuilder 改成了这个:

$formSearch         = $this->createFormBuilder($fullArray)
->add('user', 'entity', array(
'class' => 'MyBrowserBundle:User',
'choice_label' => 'name',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.enterprise', 'ASC');
},
'group_by' => function($val, $key, $index) {
return $val->getEnterprise()->getName();
},
))
->add('search', 'submit')
->getForm();

它工作正常:)

关于php - 交响乐 : Ordering Entity Type Form by entity relation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36080813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com