Olá pessoal!
Estava fazendo um sistema e, na hora de cadastro, já que havia uma tabela de relacionamentos, ao invés de criar uma (ou duas) nova Models por ser uma tabela de banco de dados diferente, resolvi aproveitar uma Model já existente. Como fazer para utilizar uma outra tabela do banco de dados em uma Model onde já foi instanciada uma tabela através do tableGateway?
Se em sua Model já foi instanciado uma tabela para o método tableGateway ($this->tableGateway…), e você deseja criar um método que use uma outra tabela, talvez para fazer uma simples consulta, delete ou insert, é só seguir o padrão abaixo:
public function relacionar($idGrupo, $idCategoria)
{
$dados = array(
"id_grupo" => $idGrupo,
"id_categoria" => $idCategoria
);
//Aqui é onde ocorre a 'mágica'
$sql = new Sql($this->tableGateway->getAdapter());
//Se for outro método que desejar (delete, update, select), basta substituir o método insert abaixo
$insert = $sql->insert("grupo_tem_categoria");
//grupo_tem_categoria é o nome da tabela
$insert->values($dados);
$statement = $sql->prepareStatementForSqlObject($insert);
//Executa a consulta/inserção
if ($statement->execute()) {
return true;
} else {
return false;
}
}
Como você pode ver, é bem simples. Você poderá ver mais detalhes e até mesmo um exemplo de select na referência abaixo. Até a próxima!
Referência
ZF2 multiple tables join in one model, get columns from join table. Disponível em: http://www.codeitive.com/7QNzggqVgV/zf2-multiple-tables-join-in-one-model-get-columns-from-join-table.html. Acesso em 19/05/2015.