开发者

When Extending Zend_Db_Table_Abstract to Create a Join it Crashes MySQL

开发者 https://www.devze.com 2023-04-06 18:40 出处:网络
I want to understand why this works perfect with out a problem. $this->db=Zend_Db_Table_Abstract::getDefaultAdapter();

I want to understand why this works perfect with out a problem.

$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)开发者_开发百科;
          }

Now if I do this by extending 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);

}
}

This crashes MySql I wanted to keep the code separate but I can join theses tables. All the Single select and updates query's work perfect. I have research all over the net and can't seem to find the solution to this puzzle. Any Help to his would be great Thanks in advance.


You don't need the from() statement or need to alias the table to the same name:

class Mail_Model_Text extends Zend_Db_Table_Abstract { protected $_name = 'Mail_Text';

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

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

}

Also, ensure that you have correctly indexed your tables.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号