Custom query com Zend Framework 2

As vezes temos uma query muito complexa e temos que acabar utilizado alguma consulta mais elaborada, que no zend framework 2 ficaria dificil de implementar fica a dica abaixo com uma maneira fácil de usar uma custom query com zend framework 2, a sintaxe é muito parecida com a do PDO.
EX:

/**
* Get users by id and status
*
* @param $user_id
* @param $user_status
* @return mixed
*/
public function getUser($user_id, $user_status = 'active')
{
$statement = $this->tableGateway->getAdapter()->createStatement(
'SELECT u.user_id, u.name, u.email, p.number, a.street
FROM users u
JOIN phone p ON p.user_id = u.user_id
JOIN address a ON a.user_id = u.user_id
WHERE u.user_id = :user_id AND u.status = :user_status');
return current(iterator_to_array($statement->execute(array(
':user_id' => $user_id,
':user_status' => $user_status,
))));
}

Notem que no final, o retorno do execute estou utilizando a função iterator_to_array , ela serve para fazer uma copia do iterator do zend para um array simples, assim ele utiliza o retorno com os campos personalizados dos campos da nossa consulta, sem forçar utilizar a estrutura do nosso objeto, tambem estou utilizando o current que retorna o elemento atual que esta no ponteiro interno do array, como essa consulta deve retornar somente 1 registro estou utilizando o current, mas caso traga mais de 1 registro pode remover a função.

ao invés do current pode ser usado dessa forma, forcando retornar o primeiro elemento do array.

return iterator_to_array($statement->execute(array(
':user_id' => $user_id,
':user_status' => $user_status,
)))[0];

Qualquer duvida, erros, ajustes e etc… comenta ai!

Uma ideia sobre “Custom query com Zend Framework 2

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *