此脚本出现问题:
$select = $tabela->select()
->joinInner('pedidos_itens', 'pedidos.peIp = pedidos_itens.ipPedido', array('ipProduto', 'ipQtde', 'ipCor', 'ipTextura', 'ipTamanho', 'ipSeq'))
->joinInner('representantes_m', 'pedidos.peRepresentante = representantes_m.rpId', array('rpNome', 'rpTelefone', 'rpCidade', 'rpEstado', 'rpEmail'))
->joinInner('produtos_m', 'pedidos_itens.ipPedido = produtos_m.prId', array('prTitulo', 'prRef', 'prCategoria', 'prColecao'))
->joinInner('produtos_cores_m', 'pedidos_itens.ipProduto = produtos_cores_m.pcProduto', array('pcTitulo'))
->joinInner('texturas_m', 'pedidos_itens.ipProduto = texturas_m.teProduto', array('teTitulo'))
->joinInner('colecoes_m', 'produtos_m.prColecao = colecoes_m.coId', array('coTitulo'))
->joinInner('categorias_m', 'produtos_m.prCategoria = categorias_m.caId', array('caTitulo'))
->where('pedidos.peId = 2')
->order('pedidos.peId DESC');
返回此错误:
Warning: Select query cannot join with another table in C:\Arquivos de programas\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Select.php on line 1345
-------编辑
我已经改变了这个:
$db = Zend_Db_Table::getDefaultAdapter();
$select = $db->select()
->from('pedidos', array('peId', 'peRepresentante', 'peData', 'peStatus'))
->joinInner('pedidos_itens', 'pedidos.peId = pedidos_itens.ipPedido', array('ipProduto', 'ipQtde', 'ipCor', 'ipTextura', 'ipTamanho', 'ipSeq'))
->joinInner('representantes_m', 'pedidos.peRepresentante = representantes_m.rpId', array('rpNome', 'rpTelefone', 'rpCidade', 'rpEstado', 'rpEmail'))
->joinInner('produtos_m', 'pedidos_itens.ipPedido = produtos_m.prId', array('prTitulo', 'prRef', 'prCategoria', 'prColecao'))
->joinInner('produtos_cores_m', 'pedidos_itens.ipProduto = produtos_cores_m.pcProduto', array('pcTitulo'))
->joinInner('texturas_m', 'pedidos_itens.ipProduto = texturas_m.teProduto', array('teTitulo'))
->joinInner('colecoes_m', 'produtos_m.prColecao = colecoes_m.coId', array('coTitulo'))
->joinInner('categorias_m', 'produtos_m.prCategoria = categorias_m.caId', array('caTitulo'))
->where('pedidos.peId = 2')
->order('pedidos.peId DESC');
$resultado = $db->query($select)->fetchAll();
它返回一个空数组,甚至还有记录。所以? :/
----编辑2
这是查询:
选择pedidos
。peId
,pedidos
。peRepresentante
,pedidos
。peData
,pedidos
。{{1} },peStatus
。pedidos_itens
,ipProduto
。pedidos_itens
,ipQtde
。pedidos_itens
,ipCor
。pedidos_itens
, ipTextura
。pedidos_itens
,ipTamanho
。pedidos_itens
,ipSeq
。representantes_m
,rpNome
。representantes_m
,{{ 1}}。rpTelefone
,representantes_m
。rpCidade
,representantes_m
。rpEstado
,representantes_m
。rpEmail
,{{1} }。produtos_cores_m
,pcTitulo
。texturas_m
,teTitulo
。produtos_m
,prTitulo
。produtos_m
,prRef
。 produtos_m
,prCategoria
。produtos_m
,prColecao
。colecoes_m
FROM coTitulo
INNER JOIN categorias_m
ON pedidos.peId = pedidos_itens.ipPedido
INNER JOIN caTitulo
ON pedidos.peRepresentante = representantes_m.rpId
INNER JOIN pedidos
ON pedidos_itens.ipProduto = produtos_cores_m.pcProduto
INNER JOIN pedidos_itens
ON pedidos_itens.ipProduto = texturas_m.teProduto
INNER JOIN representantes_m
ON pedidos_itens.ipProduto = produtos_m.prId
INNER JOIN produtos_cores_m
ON produtos_m.prColecao = colecoes_m.coId
INNER JOIN texturas_m
ON produtos_m.prCategoria = categorias_m.caId WHERE(pedidos.peId = 2)ORDER BY produtos_m
。colecoes_m
DESC
答案 0 :(得分:1)
试试这个
$db = Zend_Db_Table::getDefaultAdapter();
$select = $db->select()
$select->setIntegrityCheck(FALSE); //Now it will join
->from('pedidos', array('peId', 'peRepresentante', 'peData', 'peStatus'))
->joinInner('pedidos_itens', 'pedidos.peId = pedidos_itens.ipPedido', array('ipProduto', 'ipQtde', 'ipCor', 'ipTextura', 'ipTamanho', 'ipSeq'))
->joinInner('representantes_m', 'pedidos.peRepresentante = representantes_m.rpId', array('rpNome', 'rpTelefone', 'rpCidade', 'rpEstado', 'rpEmail'))
->joinInner('produtos_m', 'pedidos_itens.ipPedido = produtos_m.prId', array('prTitulo', 'prRef', 'prCategoria', 'prColecao'))
->joinInner('produtos_cores_m', 'pedidos_itens.ipProduto = produtos_cores_m.pcProduto', array('pcTitulo'))
->joinInner('texturas_m', 'pedidos_itens.ipProduto = texturas_m.teProduto', array('teTitulo'))
->joinInner('colecoes_m', 'produtos_m.prColecao = colecoes_m.coId', array('coTitulo'))
->joinInner('categorias_m', 'produtos_m.prCategoria = categorias_m.caId', array('caTitulo'))
->where('pedidos.peId = 2')
->order('pedidos.peId DESC');
$resultado = $db->query($select)->fetchAll();
答案 1 :(得分:0)
您不能对表对象使用join。你应该使用适配器
所以,你应该使用
$tabela->getAdapter()->select()
你应该使用方法
$tabela->getAdapter()->select()->from($this, array())