2016-12-16 3 views
1

Ich versuche einen Datensatz mit JTable delete() in einer mehrspaltigen Tabelle zu löschen. Tabelle ist eine verknüpfte Tabelle wie folgt definiert:JTable Zeile mit mehrspaltigem Schlüssel löschen

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; 

da ich keinen einzigen Primärschlüssel haben, kann ich nicht verwenden .delete ($ pk), aber ich habe den Datensatz in eine JTable Instanz zu laden.

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

nach dem 3.6 Doku Joomla auf JTable.delete ($ pk)

$ pk ist: "Ein optionaler Primärschlüsselwert zu löschen, wenn nicht die Instanz Eigenschaft Wert verwendet wird."

Also wenn ich die $ pk weglassen die aktuelle geladene Instanz sollte gelöscht werden. Allerdings bekomme ich einen "Null Primärschlüssel nicht erlaubt." Ausnahme von meinem Code oben.

Wie lösche ich einen Datensatz mit einem mehrspaltigen Schlüssel?

PS: Ich weiß, ich kann eine SQL-Anweisung direkt verwenden, aber meine Tabellenklassen sind eingerichtet, um Tracing/Logging zu tun, und ich möchte bei der Verwendung bleiben.

Antwort

0

Nach ein wenig mehr Graben habe ich hier einen 2009 forum post gefunden, der besagt, dass JTable keine mehrspaltigen oder zusammengesetzten Schlüssel unterstützt. :( Also für jetzt musste ich JTable mit meinen eigenen multi_column_key_delete() und ... update() Funktionen

erweitern