gpt4 book ai didi

Symfony2 : Using group_by option in an entity field

转载 作者:行者123 更新时间:2023-12-02 00:33:14 26 4
gpt4 key购买 nike

我正在尝试在 Symfony 2.1 中显示带有 optgroups 的选择框。我的实体树是:客户端有项目,项目有部分(Part->getProject()->getClient())

我想以这种方式显示我的选择框:

<select>
<optgroup>Client name
<option>Part name</option>
<!-- ... -->
</optgroup>
<!-- ... -->
</select>

Symfony 文档没有多大帮助。我的工作表单生成器(没有 group_by 选项)为我提供了一个简单的选择:

$this->createFormBuilder()
->add('part','entity',array(
'class' => 'SGLFLTSPartBundle:Part',
'property' => 'name',
'query_builder' => function (\SGL\FLTS\PartBundle\Entity\PartRepository $er) {
return $er->createQueryBuilder('p');
}))
->getForm();

如何添加 group_by 选项来显示客户端名称?到目前为止我已经尝试过

'group_by'      => 'project.client.name'
'group_by' => 'project.client'
'group_by' => 'ppc.name' // the DQL table alias

全部给出 PHP 错误

我也尝试过仅将项目名称显示为 optgroup,但没有成功:

'group_by'      => 'project'
'group_by' => 'project.name'
'group_by' => 'project.id' // throws no error, giving me <optgroup label="1"> ...

并尝试在 createQueryBuilder 中添加项目/客户端连接

$er->createQueryBuilder('p')->select('p, pp')->leftJoin('p.project','pp');
$er->createQueryBuilder('p')->select('p, pp.name')->leftJoin('p.project','pp')
// wrong

谢谢!

最佳答案

我今天也遇到了类似的问题。

我想您已经看到很多与错误使用对象作为数组键相关的 PHP 错误?这是由于 Symfony 尝试使用整个相关对象作为分组结果数组中的数组键引起的。

我需要进一步研究它以获得更好的解决方案,但与此同时,这就是我正在使用的......

Part 实体添加一个名为 getClientName 的新方法,如下所示:

public function getClientName()
{
// safety measure in-case a part hasn't been assigned to a project
if (null === $this->getProject()) {
return null;
}
// safety measure in-case a project hasn't been assigned to a client
if (null === $this->getProject()->getClient()) {
return null;
}
return $this->getProject()->getClient()->getName();
}

在表单字段构建器中将 group_by 选项设置为 clientName:

$this->createFormBuilder()
->add('part','entity',array(
'class' => 'SGLFLTSPartBundle:Part',
// this property will be processed by Symfony as `$part->getClientName()`
'property' => 'clientName',
->getForm();

使用这个额外方法背后的想法是为 Symfony 提供一个类方法,它可以调用该方法来获取用于执行分组的字符串值。

如果其他人有更优雅的解决方案,我很乐意看到它。

关于Symfony2 : Using group_by option in an entity field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14492591/

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