Adaptando consulta SELECT com variáveis pra Doctrine_Query
Tenho essa consulta em MySQL, que envolve antes a declaração de três variáveis. Já testei e ela funciona tranquilamente:
set @pk1 ='';
set @pk2 ='';
set @rn1 =0;
SELECT id, id_categoria, id_subcategoria, id_grupo, data_cadastro, nome_arquivo, descricao, ativo, link_video, tipo_arquivo, bandeira, categoria_download, categoria, grupo_download, subcategoria_download, bandeira_download, ordem
FROM (
SELECT A.*,
@rn1 := if(@pk1=id_grupo, if(@pk2=id_subcategoria, @rn1, @rn1+1), 1) as ordem,
@pk1 := id_grupo,
@pk2 := id_subcategoria
FROM (
select cedo.*,
CONCAT(ceca.categoria," ",cesu.subcategoria) as categoria_download,
ceca.categoria as categoria,
cegr.grupo as grupo_download,
cesu.subcategoria as subcategoria_download,
ceba.nome_bandeira as bandeira_download
from wt_programas_institucionais cedo
inner join wt_programas_institucionais_categorias ceca ON ceca.id = cedo.id_categoria
inner join wt_programas_institucionais_grupos cegr ON cegr.id = cedo.id_grupo
inner join wt_programas_institucionais_subcategorias cesu ON cesu.id = cedo.id_subcategoria
inner join wt_programas_institucionais_bandeira ceba ON ceba.id = cedo.bandeira
where ativo = 1
order by ceca.categoria ASC, grupo_download ASC, subcategoria_download ASC, nome_arquivo ASC, descricao ASC
) A ) B
Só que eu preciso adaptá-la pra Doctrine_Query. Tentei o código abaixo, mas não deu certo:
$sql = Doctrine_Query::create()
->setParameters(array(pk1=>'',pk2=>'',rn1=>0))
->select('id, id_categoria, id_subcategoria, id_grupo, data_cadastro, nome_arquivo, descricao, ativo, link_video, tipo_arquivo, bandeira, categoria_download, categoria, grupo_download, subcategoria_download, bandeira_download, ordem')
->from('SELECT A.*,
@rn1 := if(@pk1=id_grupo, if(@pk2=id_subcategoria, @rn1, @rn1+1), 1) as ordem,
@pk1 := id_grupo,
@pk2 := id_subcategoria
FROM (
select cedo.*,
CONCAT(ceca.categoria," ",cesu.subcategoria) as categoria_download,
ceca.categoria as categoria,
cegr.grupo as grupo_download,
cesu.subcategoria as subcategoria_download,
ceba.nome_bandeira as bandeira_download
from wt_programas_institucionais cedo
inner join wt_programas_institucionais_categorias ceca ON ceca.id = cedo.id_categoria
inner join wt_programas_institucionais_grupos cegr ON cegr.id = cedo.id_grupo
inner join wt_programas_institucionais_subcategorias cesu ON cesu.id = cedo.id_subcategoria
inner join wt_programas_institucionais_bandeira ceba ON ceba.id = cedo.bandeira
where ativo = 1
order by ceca.categoria ASC, grupo_download ASC, subcategoria_download ASC, nome_arquivo ASC, descricao ASC
) A ')
->where($where_palavra)
->addWhere($where_categoria)
->addWhere($where_grupo)
->addWhere($where_bandeira);
$data = $sql->fetchArray();
return $data;O que eu posso fazer nesse caso?
Discussão (0)
Carregando comentários...