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