2016-09-15 7 views
-3

私は2つのテーブルのグループと追跡を持っており、それらが接続されています。私はグループのレコードを削除したい、と追跡の外部キーを削除し、しかし、私は、この外部キーを削除するか、またはNULL値に更新する方法がわかりません。トラッキングからすべてのレコードを削除したくありません。何か案が?手伝ってくれてありがとう。追跡表で 連鎖更新または削除 - Kohanaの

protected $_table_name = 'trackingGroup'; 
protected $_primary_key = 'trg_id'; 

protected $_has_many = array(
    'tracking' => array(
     'model' => 'Orm_tracking', 
     'foreign_key' => 'tr_trgId', 
    ), 
); 
protected $_belongs_to = array(
    'user' => array(
     'model' => 'Orm_users', 
     'foreign_key' => 'trg_uId', 
    ), 
); 

function delete(){ //my first idea 
     foreach($this->tracking->tr_trtId->find() as $tracking) 
      $tracking->delete(); 
     parent::delete(); 

    } 

私が持っている:TrackingGroupsで

tr_id int PK, 
tr_uId int FK, 
tr_trtId int FK,  
tr_trgId int FK, 
tr_dateCreate data, 
tr_status Char(1) 

trg_Id int PK, 
trg_name char(40), 
trg_description char(256), 
trg_uId int FK 

作品を削除する必要があります方法:ユーザーがボタンを削除]をクリックしたい場合、それをTrackingGroupsからレコードを削除してもすべきですトラッキングテーブルのフィールドtr_trgIdを削除または更新する必要があり、tr_trgIdでNULL値があるはずです。

+0

plzのアイデアを取得するためのコードを共有 – devpro

答えて

1

あなたのアイデアは、すべてのトラッキングエントリがfind_all()関数を使用し、それらをゼロにして保存するtr_trgIdを設定見つけること、権利です。 それとも、トラッキングテーブルの削除、設定されたヌルON外部キーイベントを使用してMySQLでこれを達成することができます。

protected $_table_name = 'trackingGroup'; 
protected $_primary_key = 'trg_id'; 

protected $_has_many = array(
    'tracking' => array(
     'model' => 'Orm_tracking', 
     'foreign_key' => 'tr_trgId', 
    ), 
); 
protected $_belongs_to = array(
    'user' => array(
     'model' => 'Orm_users', 
     'foreign_key' => 'trg_uId', 
    ), 
); 

function delete(){ 
     //my first idea 
     foreach($this->tracking->tr_trtId->find_all() as $tracking){ 
      $tracking->tr_trgId= null; 
      $tracking->save(); 
     } 

     parent::delete(); 

    } 
関連する問題