JTable删除具有多列键的行

时间:2016-12-16 11:38:59

标签: joomla3.0 delete-row joomla-jtable

我尝试在多列表上使用JTable delete()删除记录。表是一个定义为的链接表:

    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)上的Joomla 3.6文档

$ pk是:"要删除的可选主键值。如果未设置,则使用实例属性值。"

因此,如果省略$ pk,则应删除当前加载的实例。但是我得到了一个不允许使用Null主键。"我的代码中的异常。

如何删除带有多列密钥的记录?

PS:我知道我可以直接使用SQL语句,但是我的表类被设置为执行跟踪/日志记录,我想坚持使用它们。

1 个答案:

答案 0 :(得分:0)

经过多一点挖掘后,我发现2009 forum post在这里说明JTable不支持多列或复合键。 :( 所以现在,我不得不用我自己的multi_column_key_delete()和... update()函数来扩展JTable