2011-09-20 3 views
0

왜이 문제가 완벽하게 작동하는지 이해하고 싶습니다.Zend_Db_Table_Abstract를 확장하여 결합을 생성 할 때 MySQL이 충돌 함

$this->db = Zend_Db_Table_Abstract::getDefaultAdapter(); 

    public function getMessages() 
    { 

     $select = $this->db->select(); 
     $select 
      ->from('Mail_Text', '*') 
      ->join(
       array('Mail' => 'Mail'), 
       'Mail.id = Mail_Text.parent_id', '*' 
       ); 
     return $this->db->fetchAll($select); 
      } 

지금 나는이 MySQL을 내가 별도의 코드를 유지하고 싶었 충돌하지만 난 논문 테이블을 조인 할 수 Zend_Db_Table_Abstract

class Mail_Model_Text extends Zend_Db_Table_Abstract 
{ 

     protected $_name = 'Mail_Text'; 
     public function fetchMessges(){ 
     $select = $this->select(); 
     $select->setIntegrityCheck(false) 
      ->from($this->_name, '*') 
      ->join(
       array('Mail' => 'Mail'), 
       'Mail.id = Mail_Text.parent_id', '*' 
       ); 
     return $this->fetchAll($select); 

} 
} 

을 확장하여이 작업을 수행합니다. 모든 단일 선택 및 업데이트 쿼리의 작업이 완벽합니다. 나는 그물 전체를 연구했고이 퍼즐에 대한 해결책을 찾을 수없는 것처럼 보입니다. 그의 도움은 앞으로도 감사 할 것입니다.

+0

크래시라고 말하면, 말 그대로 MySQL 서버 프로세스가 종료되고 다시 시작해야합니까? –

+0

mysql 프로세스는 최대 50 %까지 올라갈 수 있으므로, mysql을 재시작해야하는 모든 작업을 수행 할 수 있습니다. – JimmyB

답변

0

당신은에서() 문이 필요하거나 같은 이름으로 테이블 별칭을 할 필요가 없습니다 :

클래스 Mail_Model_Text이 { 보호 $의 _name = 'Mail_Text'Zend_Db_Table_Abstract을 확장;

public function fetchMessges() 
{ 
    $select = $this->select(); 
    $select->setIntegrityCheck(false) 
     ->join('Mail', 'Mail.id = Mail_Text.parent_id'); 

    return $this->fetchAll($select); 
} 

} 또한

, 올바르게 테이블을 색인을 확인합니다.

관련 문제