Я новичок в 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» имеет идентификатор «palette_0».но я думаю, что на самом деле это указывает на другой индекс в базе данных, не так ли?!
Итак, когда я читаю объект, я хочу, чтобы шлейфы возвращались INDEX, чтобы я мог правильно их отобразить.1018 * Например:
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
здесь, но у меня есть приказ сохранить.Как мне это сделать?
Нужно ли мне использовать другой тип, может быть ??
спасибо.