[解決済み】doctrine2での削除カスケードについて
2022-04-02 17:47:17
質問
Doctrine2 を使って、親テーブルから行を削除し、子テーブルの一致する行を自動的に削除する方法を学ぶために、簡単な例を作ろうとしています。
以下は、私が使用している2つのエンティティです。
Child.php。
<?php
namespace Acme\CascadeBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="child")
*/
class Child {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="Father", cascade={"remove"})
*
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="father_id", referencedColumnName="id")
* })
*
* @var father
*/
private $father;
}
お父さん.php
<?php
namespace Acme\CascadeBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="father")
*/
class Father
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
}
データベース上にテーブルは正しく作成されますが、On Delete Cascadeオプションは作成されません。私は何を間違えているのでしょうか?
どうすればいいですか?
Doctrine には 2 種類のカスケードがあります。
1) ORMレベル
cascade={"remove"}
これはUnitOfWorkで行われる計算であり、データベース構造には影響しない。 オブジェクトを削除すると、UnitOfWorkはアソシエーション内のすべてのオブジェクトを繰り返し、それらを削除します。
2) データベースレベル - 以下のものを使用します。
onDelete="CASCADE"
をアソシエーションのjoinColumnに追加することで、データベースの外部キーカラムにOn Delete Cascadeが追加されます。
@ORM\JoinColumn(name="father_id", referencedColumnName="id", onDelete="CASCADE")
また、cascade={"remove"}を設定した場合、子オブジェクトを削除すると、このカスケードによって親オブジェクトが削除されてしまうことを指摘しておきます。明らかに、あなたが望むものではありません。
関連
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み] [Solved] Fatal error: メンバ関数prepare()のNULLでの呼び出し
-
[解決済み】変な電話番号を生成するフェイカー?
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み】pdo - 非オブジェクトのメンバー関数prepare()への呼び出し【重複】。
-
[解決済み] $wpdb->update または $wpdb->insert を実行すると、引用符の前にスラッシュが追加される
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み】PHPの予期しないT_VARIABLEとは何ですか?
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。
-
[解決済み] オートロードとは何ですか; spl_autoload、__autoload、spl_autoload_register はどのように使うのですか?
最新
-
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_network_getaddresses: getaddrinfo failed: 名前またはサービスが不明
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み] コマンドの同期がとれていない。
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み】PHPの予期しないT_VARIABLEとは何ですか?
-
[解決済み】PHPのクラスが見つからないが、インクルードされている
-
[解決済み] mysqli_fetch_assoc() は、パラメータ 1 が mysqli_result であることを期待し、boolean が与えられる [重複] 。