2016-12-16 10 views
1

다중 열 테이블에서 JTable delete()를 사용하여 레코드를 삭제하려고합니다. 나는 단 하나의 기본 키가 없기 때문에JTable 다중 열 키가있는 행 삭제

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의 인스턴스로 기록을로드 할 수 있습니다 표는 연결된 테이블이 정의된다. JTable.delete ($의 PK)

$의 PK가에 줌라 3.6 다큐에 따라

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

". 삭제할 수있는 옵션 기본 키 값 인스턴스 속성 값을 설정하지 않으면이 사용됩니다."

그래서 $ pk를 생략하면 현재로드 된 인스턴스를 삭제해야합니다. 그러나 "Null 기본 키가 허용되지 않습니다." 위의 코드에서 예외.

다중 열 키가있는 레코드를 삭제하려면 어떻게합니까?

추신 : 나는 SQL 문을 직접 사용할 수 있지만 내 테이블 클래스는 추적/기록 작업을 수행하도록 설정되어 있으므로 사용법을 고수하고 싶습니다.

답변

0

조금 더 파고 난 후에 나는 2009 forum post을 발견했다. 여기에 JTable은 다중 열 또는 복합 키를 지원하지 않는다고 나와있다. : 그래서 지금 내 자신의 multi_column_key_delete() 및 ... update() 함수를 사용하여 JTable을 확장해야했습니다.