#symfony1 #doctrine #field
#symfony1 #доктрина #поле
Вопрос:
В моем приложении должно быть 3 таблицы. — event
, event_category
и event_category_connection
. Которое представляет собой отношение «многие ко многим» между двумя первыми таблицами. Что я пытаюсь сделать, так это добавить sfWidgetFormDoctrineChoice
с категориями в EventForm
(которые автоматически генерируются с помощью Symfony — doctrine model ), что после сохранения события я смогу автоматически добавлять соединение между новым событием и уже существующими категориями.
$this->widgetSchema['event_category_id'] = new sfWidgetFormDoctrineChoice(array(
'model' => 'EventCategory',
'add_empty' => false,
'multiple'=>"true",
'expanded'=>true));
$this->setValidator('event_category_id', new sfValidatorDoctrineChoice(array(
'model' => 'EventCategory',
'required' => false)));
Это то, что я добавил в автоматически сгенерированную EventForm
. Я понимаю, что во время операции создания новый объект сохраняется с помощью $form->getObject()->save()
функции. Это то место, где я получаю сообщение об ошибке (неизвестное свойство записи / связанный компонент).
Есть предложения, как я могу справиться с этой операцией. Это то, что я пытаюсь закодировать:
Одним действием -> сохранить объект -> получить идентификатор нового объекта -> сохранить отношение многие ко многим между категориями и новым объектом.
Krzycho.
Комментарии:
1. Можете ли вы опубликовать событие вашей схемы, event_cetegory и event_category_connection?
Ответ №1:
Сначала вам нужно выполнить $form->save()
, затем вы сохраняете свои отношения (это один из подходов, вероятно, есть много способов добраться туда):
protected function processForm(sfWebRequest $request, sfForm $form)
{
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
if ($form->isValid())
{
$obj = $form->save();
$this->saveRelations($request, $obj);
// save the event_category objects in an array: $event_categories
// $obj->EventCategory = $event_categories;
// $obj->save();
}
// ...
}