Coalesce em zendframework
Estou com problema para realizar a seguinte query no apigility/Zend:
SELECT NOC.id AS id, NOC.ds_titulo, NOC.fl_ativo,
to_char(NOC.dt_cadastro, 'DD/MM/YYYY HH24:MI:SS') AS dt_alteracao, NOC.dt_cadastro,
COALESCE(AUS.id, AAD.id) as login,
COALESCE(AUS.ds_apelido, AAD.ds_apelido) AS cadastrado,
COALESCE(AUS.eca_id_entidade_fk, AAD.eca_id_entidade_fk) as entidade, FALSE AS editar
FROM tb_noticia_cadastro AS NOC
LEFT JOIN tb_acesso_user AS AUS ON NOC.id_login_fk = AUS.id
LEFT JOIN tb_acesso_admin AS AAD ON NOC.id = AUS.aad_id_admin_fk
OR NOC.id_login_fk = AAD.id
ORDER BY dt_cadastro DESC
Uma das forma no zend com COALESCE, já tentei com CASE WHEN, mas tive o mesmo problema:
$select = new Select(['noc' => 'tb_noticia_cadastro']);
$select->columns([
'id',
'dt_cadastro',
'ds_titulo',
'fl_ativo',
'login' => (new Predicate())->expression('COALESCE(?, ?)', ["AUS.id", "AAD.id"]),
]);
$select->join(['aus' => 'tb_acesso_user'], 'noc.id_login_fk=aus.id', ['login' => 'id'], 'LEFT');
$select->join(['aad' => 'tb_acesso_admin'], 'noc.id_login_fk=aad.id', ['login' => 'id'], 'LEFT');
$select->order('dt_cadastro DESC');
$noticias = $this->tableGateway->selectWith($select);
return iterator_to_array($noticias);
retorna:
{
"id": 84,
"ds_titulo": "teste de script",
"fl_ativo": true,
"dt_cadastro": "2017-05-19 14:18:38.678281",
"login": 1,
"ds_apelido": null,
"eca_id_entidade_fk": null,
"editar": false,
"_links": {
"self": {
"href": "http://localhost:9999/admin/noticias/grid/84"
}
}
},
{
"id": 77,
"ds_titulo": "teste",
"fl_ativo": true,
"dt_cadastro": "2017-03-23 09:43:30.742308",
"login": null,
"ds_apelido": null,
"eca_id_entidade_fk": null,
"editar": false,
"_links": {
"self": {
"href": "http://localhost:9999/admin/noticias/grid/77"
}
}
}
Não retorna os dados da tabela tb_acesso_user.
Alguém saberia como resolver isso, ou fazer outra forma?
Discussão (0)
Carregando comentários...