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

в соответствии с документом Joomla 3.6 на JTable.delete($pk)

$ pk: "Необязательное значение первичного ключа для удаления. Если не установлено, используется значение свойства экземпляра".

Поэтому, если я опущу $ pk, текущий загруженный экземпляр должен быть удален. Однако я получаю "Нулевой первичный ключ не разрешен". исключение из моего кода выше.

Как удалить запись с ключом из нескольких столбцов?

PS: я знаю, что могу использовать оператор SQL напрямую, но мои классы таблиц настроены на трассировку / ведение журнала, и я хотел бы использовать их.

1 ответ

После еще нескольких копаний я нашел здесь сообщение на форуме 2009 года, в котором говорится, что JTable не поддерживает многостолбцовые или составные ключи.:(На данный момент мне пришлось расширить JTable с помощью моих собственных функций multi_column_key_delete() и... update()

Другие вопросы по тегам