[解決済み] Doctrine 2 でエンティティを別の行として再保存する方法
2023-06-22 21:40:16
質問
例えば、エンティティ
$e
. これを別の行として保存する一般的な方法はありますか。この行は同じエンティティデータを持ちますが、別の主キーを持ちます。
なぜこれが必要なのか。私は、ある種の 一時的なデータベース スキーマを実装しており、行を更新するのではなく、別の行を作成する必要があります。
どのように解決するのですか?
クローンを作成し、エンティティに以下のメソッドを追加してみてください。
public function __clone() {
$this->id = null;
}
あなたは デタッチ をデタッチする必要があるかもしれません。私は今これをテストするために私の開発マシンを手元に置いていません。
$f = clone $e;
$em->detach($f);
$em->persist($f);
$em->flush();
更新情報
単純な SQLite のデモを使ってみただけです。何もする必要はないはずです。以下は、私の場合
__clone()
メソッドを追加することなく、また、他に特別なことをすることなく
$new = clone $old;
$em->persist($new);
$em->flush();
一度フラッシュされると
$new
エンティティは新しい ID を持ち、DB の新しい行として保存されました。
私はまだ、ID プロパティを null にするために
__clone()
メソッドを使用して ID プロパティを無効にします。
更新 2
Doctrine のコードを調べてみると、生成されたプロキシクラスが
__clone()
を実装しており、この重要な行は
unset($this->_entityPersister, $this->_identifier);
関連
-
[解決済み] [Solved] Fatal error: メンバ関数bind_param()のbooleanに対する呼び出し [重複] [重複
-
[解決済み】接続の取得に失敗しました: php_network_getaddresses: getaddrinfo failed: 名前またはサービスが不明
-
[解決済み】move_uploaded_fileは、「failed to open stream: Permission denied" というエラーが出る
-
[解決済み】PHP定数「PHP_EOL」はいつ使うの?
-
[解決済み】「セッションキャッシュリミッターを送信できません - ヘッダーはすでに送信されています」【重複】。
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】Apache + PHPで「ヘッダの前にスクリプトの出力が終了する」件
-
[解決済み】mysqli::query(): mysqli をフェッチできない
-
[解決済み] YouTube APIからYouTubeビデオのサムネイルを取得する方法を教えてください。
-
[解決済み】Doctrine2: 参照テーブルで余分なカラムを持つ多対多を処理する最良の方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PHP定数「PHP_EOL」はいつ使うの?
-
[解決済み】不明なMySQLサーバーのホスト
-
[解決済み】変な電話番号を生成するフェイカー?
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み】stdClassクラスのオブジェクトが文字列に変換されない。
-
[解決済み】pdo - 非オブジェクトのメンバー関数prepare()への呼び出し【重複】。
-
[解決済み】Phpのincludeが機能しない? 関数がincludeされない
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み】In_arrayが動作しない。
-
[解決済み] $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて