У меня есть форма доктрины в Symfony, которая сохраняет определенный объект в таблице в БД.
Делая это, я хочу также обновить другой объект, который имеет отношение к первому, чтобы объекты обновляли отношение (один ко многим) при сохранении первого объекта.
Я действительно не знаю, возможно ли это вообще ...
Я выложу свой код, как ссылку:
Схема:
Entry:
columns:
pic: { type: integer, notnull: false, default: null }
relations:
Pic:
local: pic
foreign: id
onDelete: SET NULL
Pics:
type: many
class: Pic
local: id
foreign: entry_id
Pic:
columns:
id: { type: integer, notnull: true, primary: true, autoincrement: true }
entry_id: { type: integer, notnull: true, primary: true }
pic: { type: string(255), notnull: true }
relations:
Entry:
local: entry_id
foreign: id
onDelete: CASCADE
У меня есть другое отношение «многие ко многим» между Pic и Entry, потому что у Entry может быть много Pics, но первый созданный мной Pic также должен быть определен как Pic «по умолчанию», который я добавляю в Entry. поле рисунка ...
(я ранее и правильно создавал запись, поэтому теперь я должен получить новый рисунок, который будет «по умолчанию» для записи) ... В действиях по созданию для таблицы Pic я хочу обновить Вход, чтобы он знал только что добавленный мной новый Pic, который должен быть связан с ним по умолчанию ...
Рис. Actions.class.php:
public function executeCreate(sfWebRequest $request)
{
$this->form = new PicForm();
$this->form->bind(
$request->getParameter($form->getName()),
$request->getFiles($form->getName())
);
if ($form->isValid())
{
$this->pic = $form->save();
$entry = $this->pic->getEntry();
$entry->updateSetPic($this->pic);
$this->redirect('entry_show', $entry);
}
}
Наконец, у меня есть следующий метод «updateSetPic» в файле lib / model / doctrine / Entry.class.php:
public function updateSetPic(Pic $pic)
{
$this->setPic($pic);
$this->save();
}
Проблема, с которой я столкнулся сейчас, заключается в том, что, по-видимому, метод upateSetPic, получающий недавно сохраненный объект Pic (в методе создания действий Pic), просто ничего не получает, как если бы объект Pic, который $ form-> save ( ) в методе ничего нет (хотя он действительно экономит, но, может быть, на данном этапе он не зафиксирован или что-то в этом роде?)
Так что мой вопрос, я делаю это хорошо? Или где я не прав? Есть ли способ сделать то, что мне нужно? Если так, то что это? Может быть, мне нужно вмешаться в другую часть процесса сохранения Pic, но сейчас я вроде как потерян ...
Есть идеи?
Спасибо!