私はSymfonyに教義形式を持っています。それはDBのテーブルに特定のオブジェクトを保存します。これにより、最初のオブジェクトとの関係を持つ別のオブジェクトも更新したいので、最初のオブジェクトが保存されると、オブジェクトは関係(1対多)を更新します。
これが可能かどうかは本当にわかりません...
参考として、コードを投稿します。
スキーマ:
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が含まれている可能性があるため、PicとEntryの間には別の多対多の関係がありますが、最初に作成するPicは、Entry.picフィールドで設定した「デフォルト」のPicとしても定義する必要があります。 ..
(以前は正しくエントリを作成していたので、新しいPicを取得する必要があります。これがエントリの「デフォルト」になります)... 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);
}
}
最後に、lib / model / doctrine/Entry.class.phpファイルに次の'updateSetPic'メソッドがあります。
public function updateSetPic(Pic $pic)
{
$this->setPic($pic);
$this->save();
}
私が今抱えている問題は、(Picアクションのcreateメソッドで)最近保存されたPicオブジェクトを受け取るupateSetPicメソッドが、$ form-> save()メソッドが持っているPicオブジェクトのように何も受け取らないことです。その中には何もありません(それは本当に節約できますが、おそらくこの段階ではコミットされていませんか?)
だから私の質問は、私はこれを大丈夫ですか?または私はどこが間違っていますか?必要なことを達成する方法はありますか?もしそうなら、その方法は何ですか?Picの保存プロセスの別の部分に参加する必要があるかもしれませんが、今では少し迷っています...
何か案は?
ありがとうございました!