2012-06-05 4 views
0

이 쿼리를 어떻게 수행해야하는지 파악하려고합니다. 특정 기한을 등록했지만 활성화되지 않은 모든 사용자를 삭제하려고합니다. 내 지식codeigniter에서 쿼리 삭제

usersRegistrationsTable - userID, registrationDate 
usersTable    - userID, usersStatusesID 
+0

'usersTable'및 'usersRegistrationsTable'에서 삭제 하시겠습니까? 또는'usersTable' 만? –

+0

두 테이블 모두 일정 시간이 지나면 다시 등록해야합니다. –

+0

기본 키를 삭제할 때 외래 키가 삭제되면 외래 키 제약 조건과 데이터베이스 구조를 확인하십시오. –

답변

3

는, CodeIgniter의는 액티브 레코드 인터페이스를 통해 DELETE 쿼리에서 JOIN의를 지원하지 않습니다

function purgeNA($expirePeriod) 
{ 
    $this->db->where('usersStatusesID', 1); 
    $this->db->where('UNIX_TIMESTAMP(registrationDate) <', time() - $expirePeriod); 
    $this->db->delete($this->usersRegistrationsTable); 
} 

여기 내 DB 구조입니다. 대신 다음과 같이 SQL 문을 실행해야합니다.

$sql = "DELETE FROM 
      usersTable u 
      JOIN usersRegistrationsTable r ON u.userID = r.userID 
      WHERE usersStatusesID = 1 AND UNIX_TIMESTAMP(registrationDate) < ?"; 
$this->db->query($sql, array(time() = $expirePeriod));