2016-12-16 4 views
1

複数列のテーブルでJTable delete()を使用してレコードを削除しようとしています。私は、単一の主キーを持っていないので、私は($のPKを).delete使用することはできませんが、私はJTableのインスタンスにレコードをロードする必要が複数列のキーを持つ行をJTableで削除する

CREATE TABLE IF NOT EXISTS `#__bb_league_members` (
     `user_id` int(10) unsigned NOT NULL , 
     `league_id` int(10) unsigned NOT NULL , 
     `status` TINYINT NULL DEFAULT 0, 
    .... 
    PRIMARY KEY (`league_id`,`user_id`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

:表は、次のように定義リンクテーブルです。 JTable.delete($ pkを)

$のPKがあるのJoomlaの3.6ドキュメンタリーによると

 $data = []; 
     $data['user_id'] = $uid; 
     $data['league_id'] = $lid; 

     $tbl = $this->getTable('LeagueMember'); 
     $tbl->load($data); //a var dump here shows the record is loaded!! 
     return $tbl->delete(); 

: "削除するオプションの主キー値インスタンスのプロパティ値を設定していない場合は、使用されています。"

したがって、$ pkを省略すると、現在読み込まれているインスタンスを削除する必要があります。しかし、私は "Nullプライマリキーが許可されていません。"上記の私のコードからの例外。

複数の列のキーを持つレコードを削除するにはどうすればよいですか?

PS:私はSQL文を直接使うことができますが、私のテーブルクラスはトレース/ロギングを行うように設定されているので、それらを使うことに固執したいと思います。

答えて

0

もう少し掘り下げた後、私は2009 forum postを見つけました。ここでは、JTableはマルチカラムまたは複合キーをサポートしていません。 :( 今のところ私は自分のmulti_column_key_delete()と... update()関数でJTableを拡張しなければならなかった

関連する問題