1

我正在尝试使用 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 当前加载的实例应该被删除。但是我得到一个“不允许空主键”。我上面的代码中的异常。

如何删除具有多列键的记录?

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

4

1 回答 1

0

经过一点点挖掘后,我在这里找到了一个 2009 年的论坛帖子,其中指出 JTable 不支持多列或复合键。:( 所以现在,我不得不用我自己的 multi_column_key_delete() 和 ... update() 函数来扩展 JTable

于 2016-12-16T19:04:06.080 回答