2016-08-19 1 views
0

CakePHP 2.8.xを使用していますが、1つの削除アクションで2つのテーブルからレコードを削除する方法を探しています。View CakePHPを使用して複数のテーブルからレコードを削除する2.8.x

訪問者、ゲスト、登録者の3つのテーブルからViewを作成しました。これらのテーブルはvisitor_idによって接続されています。

ビジターモデルでは、ビューを$useTableに追加しました。今私は、たとえば訪問者1の削除を押すと、私は訪問者1のゲストと登録テーブルからレコードを削除し、ビジターの情報を訪問者のテーブルに保存したい、私は必要なパラメータは何ですか?この関数に追加するには、ゲストと登録テーブルからレコードを削除するだけですか?

さらに詳しい情報が必要な場合は、お手伝いします。事前にThx

更新:テーブルが関連付けられています。これらはモデルです:

ビジター:

public $hasMany = array(
    'Guest' => array(
     'className' => 'Guest', 
     'foreignKey' => 'visitor_id', 
     'dependent' => false, 
     'exclusive' => false, 
    ), 
    'Registration' => array(
     'className' => Registration', 
     'foreignKey' => 'visitor_id', 
     'dependent' => false, 
     'exclusive' => false, 
    ), 

); 

public $belongsTo = array(

); 

登録:

public $belongsTo = array(
    'Visitor' => array(
     'className' => 'Visitor', 
     'foreignKey' => 'visitor_id', 
    ), 

); 

ゲスト:

public $belongsTo = array(
    'Visitor' => array(
     'className' => 'Visitor', 
     'foreignKey' => 'visitor_id', 
    ), 
+0

は、関連したこれら3つのテーブルはありますか?その場合は、モデルに関連性コードを表示してください。あなたの説明に感謝します。 –

答えて

3

ケーキ2でdeleteAll()機能があります(cookbookを参照)

あなたは条件の配列を関数に渡す必要があります。あなたの場合、visitor_id = $idRegistrationと同じ)を持つGuestsをすべて削除します。

$this->Visitor->Guest->deleteAll(array('visitor_id' => $id)); 

$this->Visitor->Registration->deleteAll(array('visitor_id' => $id)); 

これは、あなたがそれを試すことができVisitor自体

+0

私はdeleteAllはそのID(他のテーブルを含む)に関連付けられているすべてを削除すると思ったが、それはちょうどそのIDを含むteのテーブル内のすべてのレコードを削除します:) – user2314339

0

に触れることなく、すべてのGuestsVisitorRegistrationsを削除させていただきます、その私のために働いた

public function your_action($id=null){ 
    $this->MainMdel->ConnectedModel1->deleteAll(array('ConnectedModel_id' => $id)); 
    $this->MainMdel->ConnectedModel2->deleteAll(array('ConnectedModel_id' => $id)); 
    } 
関連する問題