Zend_Db_Select

109 views
Skip to first unread message

Leandro Diniz Soares

unread,
Aug 9, 2009, 12:54:08 PM8/9/09
to zfbr...@googlegroups.com
Senhores,

Estou começando com Zend Framework. Por isso peço a paciência e a ajuda de vocês...

Se uso:
        $select = $db->select();
            $select->from( 'conteudos', array ( 'id','titulo','introducao','descricao' ) )
             ->joinLeft(array('cat' => 'categorias'),
                    'conteudos.id_categoria = cat.id',
                    array( 'nome','descricao') )
            ->where( "conteudos.id_categoria = $sub AND conteudos.status=1" )
            ->order( 'conteudos.titulo' );
        $rows = $db->fetchAll($select);
Dá o erro:
Fatal error: Uncaught exception 'Zend_Db_Table_Select_Exception' with message 'Select query cannot join with another table' in E:\xampplite\htdocs\zend_module\library\Zend\Db\Table\Select.php:211 Stack trace: #0 E:\xampplite\htdocs\zend_module\library\Zend\Db\Adapter\Abstract.php(418): Zend_Db_Table_Select->assemble() #1 E:\xampplite\htdocs\zend_module\library\Zend\Db\Adapter\Pdo\Abstract.php(220): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Table_Select), Array) #2 E:\xampplite\htdocs\zend_module\library\Zend\Db\Table\Abstract.php(1330): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Table_Select)) #3 E:\xampplite\htdocs\zend_module\library\Zend\Db\Table\Abstract.php(1158): Zend_Db_Table_Abstract->_fetch(Object(Zend_Db_Table_Select)) #4 E:\xampplite\htdocs\zend_module\application\modules\site\controllers\ConteudoController.php(53): Zend_Db_Table_Abstract->fetchAll(Object(Zend_Db_Table_Select)) #5 E:\xampplite\htdocs\zend_module\library\Zend\Controller\Action.php(503): ConteudoController->listarAction() #6 E:\xampp in E:\xampplite\htdocs\zend_module\library\Zend\Db\Table\Select.php on line 211


Se tento assim:
        $select = $db->getAdapter()->select();
            $select->from( 'conteudos', array ( 'id','titulo','introducao','descricao' ) )
             ->joinLeft(array('cat' => 'categorias'),
                    'conteudos.id_categoria = cat.id',
                    array( 'nome','descricao') )
            ->where( "conteudos.id_categoria = $sub AND conteudos.status=1" )
            ->order( 'conteudos.titulo' );
        $rows = $select->query($select);
Dá o erro:
Notice: Object of class Zend_Db_Select could not be converted to int in E:\xampplite\htdocs\zend_module\library\Zend\Db\Statement\Pdo.php on line 426







[],
Leandro Diniz Soares
Desenvolvedor / Analista (Web)
Belo Horizonte - MG
leandro...@gmail.com
Visite meu blog:
http://aquasimples.blogspot.com/

Nivaldo Arruda

unread,
Aug 9, 2009, 1:14:57 PM8/9/09
to zfbr...@googlegroups.com
Olá leandro, adicione o seguinte método (antes do "from" por exemplo):

->setIntegrityCheck(false)
--
Nivaldo Arruda
Visite: http://www.nivaldoarruda.com.br

Leandro Diniz Soares

unread,
Aug 9, 2009, 2:19:13 PM8/9/09
to zfbr...@googlegroups.com
Nivaldo,

Obrigado pela resposta... Poderia me ajudar de novo?

Coloquei assim:

        $select = $db->getAdapter()->select();
            $select->setIntegrityCheck(false)

             ->from( 'conteudos', array ( 'id','titulo','introducao','descricao' ) )
             ->joinLeft(array('cat' => 'categorias'),
                    'conteudos.id_categoria = cat.id',
                    array( 'nome','descricao') )
            ->where( "conteudos.id_categoria = $sub AND conteudos.status=1" )
            ->order( 'conteudos.titulo' );
        $rows = $select->query($select);

E deu este erro:
Fatal error: Uncaught exception 'Zend_Db_Select_Exception' with message 'Unrecognized method 'setIntegrityCheck()'' in E:\xampplite\htdocs\zend_module\library\Zend\Db\Select.php:1220 Stack trace: #0 [internal function]: Zend_Db_Select->__call('setIntegrityChe...', Array) #1 E:\xampplite\htdocs\zend_module\application\modules\site\controllers\ConteudoController.php(45): Zend_Db_Select->setIntegrityCheck(false) #2 E:\xampplite\htdocs\zend_module\library\Zend\Controller\Action.php(503): ConteudoController->listarAction() #3 E:\xampplite\htdocs\zend_module\library\Zend\Controller\Dispatcher\Standard.php(285): Zend_Controller_Action->dispatch('listarAction') #4 E:\xampplite\htdocs\zend_module\library\Zend\Controller\Front.php(934): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #5 E:\xampplite\htdocs\zend_module\index.php(139): Zend_Controller_Front->dispatch() #6 {main} thrown in E:\xampplite\htdocs\zend_module\library\Zend\Db\Select.php on line 1220





[],
Leandro Diniz Soares
Desenvolvedor / Analista (Web)
Belo Horizonte - MG
leandro...@gmail.com
Visite meu blog:
http://aquasimples.blogspot.com/


2009/8/9 Nivaldo Arruda <niv...@gmail.com>

Hélio W.C

unread,
Aug 9, 2009, 6:08:24 PM8/9/09
to zfbr...@googlegroups.com
Antes do from? Eu acho que tanto faz... mas aqui eu uso no final...
Helio W. Caruccio


2009/8/9 Leandro Diniz Soares <leandro...@gmail.com>

Tales Santos

unread,
Aug 10, 2009, 3:00:56 PM8/10/09
to zfbr...@googlegroups.com
Olá Nivaldo, imagino que esteja pegando a nova instancia de Zend_Db_Select apartir do adapter. Se for isso mesmo, nao precisa chamar o metodo setIntegrityCheck() na sua consulta.
Só é necessário este método qdo vc pega a instancia de Zend_Db_Select a partir de um model específico, entendeu? Por padrao o Zend nao deixa vc incluir colunas de outras tabelas
na sua consulta, e para contornar isso vc deve chamar o metodo setIntegrityCheck(false) para ignorar essa 'integridade' que o Zend_Db_Select tem.

Ex.:

$select = $myModel->select()->setIntegrityCheck(false);
$select
->from(....)
        ->.....;

Arian Maykon de Araújo Diógenes

unread,
Aug 10, 2009, 4:46:00 PM8/10/09
to zfbr...@googlegroups.com
Isso que o Tales explicou é devido:
Zend_Db_Adapter_Abstract::select() retorna uma instância de Zend_Db_Select
já o
Zend_Db_Table_Abstract::select() retorna uma instância de Zend_Db_Table_Select.

Só reforçando :D

2009/8/10 Tales Santos <tales.augu...@gmail.com>



--
_________________________________________________
Arian Maykon de Araújo Diógenes

Fortaleza - Ceará - Brasil
Linux User #: 467310
Blog: http://arianmaykon.blogspot.com/
Contatos: http://meadiciona.com/dead_thinker

Tales Santos

unread,
Aug 11, 2009, 10:17:07 AM8/11/09
to zfbr...@googlegroups.com
Justamente!!
Reply all
Reply to author
Forward
0 new messages