gpt4 book ai didi

symfony - 从 symfony2 中的 collectionType 排序

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

我是 symfony2 的新手,我只是想弄清楚该框架是如何运作的。我有以下关系:

1 palette(Palette entity) contains exactly 256 plumes(LogicalPlume entity) 
( which refers to a color(PhysicalPlume entity) ).
PS: the ID of the row in db is set as auto-increment,
but the index of logicalPlume and physicalPlume is set manually (0->255).

我将实体中的关系设置为 oneToMany 和 ManyToOne。我将 PaletteType 创建为具有 CollectionType:

$builder->add('logicalPlumes', 'collection', array(
'type' => new LogicalPlumeType($profile_id),
'label' => 'plumes'
));

LogicalPlumeType

$profile_id = $this->profile_id;

$builder->add('physicalPlume', 'entity', array(
'class' => 'DessinPlumeBundle:PhysicalPlume',
'query_builder' => function(EntityRepository $er) use ($profile_id) {
return $er->createQueryBuilder('pp')
->where("pp.profile = :profile")
->orderBy('pp.index', 'ASC')
->setParameter('profile', $profile_id);
}
));

一切都很好,调色板对象正确地保存在数据库中(除了对象没有保存在正确的索引中)。

Firebug 告诉我标签“0”旁边的选择的 ID 为“palette_0”。但我认为这实际上指向数据库中的另一个索引,不是吗?!

因此,当我读取该对象时,我希望 INDEX 返回羽流,以便我可以正确显示它们。

例如:

I saved 
logicalPlume1 = 10;
logicalPlume2 = 0; with '0' being the default value.
logicalPlume3 = 9;
logicalPlume4 = 0;
logicalPlume5 = 5;

when i read it back, it shows:
logicalPlume1 = 10;
logicalPlume2 = 5;
logicalPlume3 = 9;
logicalPlume4 = 0;
logicalPlume5 = 0;
pushing all the '0' values to the bottom

我想我应该在这里使用那个CollectionType,但我有一个订单需要保留。我该怎么做?

我是否需要使用其他类型?

谢谢。

最佳答案

如果没有看到您的 Controller 代码,我会说您的级联持久化处理顺序与您为表单选择的非默认值不同。

尝试通过 foreach 或 map 持久化每个羽流并查看索引是什么。

如果您仍然需要帮助,请发布 Controller 代码。

关于symfony - 从 symfony2 中的 collectionType 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7847560/

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