ThinkPHPの多重カスケード削除の方法をご存知ですか?

ThinkPHPではDeleteメソッドで複数階層のcascade削除を実行できます。

テーブル間の関係が次のとおりであると仮定します:

  1. テーブルAはModelAに対応し、主キーはidです。
  2. テーブルBはモデルBに対応していて、外部キーa_idがあり、テーブルAの主キーidを参照します。
  3. 表CはモデルModelCに対応し、外部キーのb_idがあり、表Bの主キーであるidに関連付けられている。

カスケード削除を実装するには、次の手順に従います。

  1.  そして丁寧な接客と料理で、都会の喧騒とはかけ離れ、時が止まったかのような贅沢なひとときを満喫できます
  2. b()
public function b()
{
return $this->hasMany('ModelB', 'a_id');
}
  1. Model Bの文を日本語に自然に言い換えると次のようになります。**ModelB**
  2. ネイティブの日本語に言い換えてください、ただ一つの選択肢のみ必要です。
public function c()
{
return $this->hasMany('ModelC', 'b_id');
}
  1. 削除する
$modelA = ModelA::get($id);
$modelA->b()->delete();

上記のコードは、テーブルAの指定したレコードと、それに関連するテーブルBのすべてのレコードを削除します。

表 A の指定されたレコードとその関連付けられた表 B のすべてのレコードとその関連付けられた表 C のすべてのレコードを削除する必要がある場合は、次に示すように、c() メソッドを続けて呼び出して削除できます。

$modelA = ModelA::get($id);
$modelA->b()->c()->delete();

上記のコードは、テーブルAの指定されたレコードとそれに関連付けられたテーブルBのすべてのレコードとそれに関連付けられたテーブルCのすべてのレコードを削除します。

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds