2016-12-16 89 views
1

我试着在多列表上使用JTable delete()删除一条记录。表是一个链接表定义为: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; 

,因为我没有一个主键,我无法使用.delete($ PK),但我一定要记录加载到一个JTable实例。

 $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(); 

根据对JTable.delete($ PK)

$ PK是的Joomla 3.6实况: “来删除一个可选的主键值,如果没有设置该实例的属性值被使用。”

因此,如果我省略$ pk,应删除当前加载的实例。但是,我收到了“空主键不允许”。来自我上面的代码的例外。

如何使用多列键删除记录? PS:我知道我可以直接使用SQL语句,但我的表类设置为跟踪/日志记录,我想坚持使用它们。

回答

0

经过多一点挖掘后,我在这里发现了一个2009 forum post,其中指出JTable不支持多列或复合键。 :( 因此,现在我必须用我自己的multi_column_key_delete()和... update()函数来扩展JTable