/** * Retorna Documentos por Pessoa * @param PessoaValueObject $voPessoa * @throws PersistException */ public function findByPessoa(PessoaValueObject $voPessoa) { try { /* * SELECT pe.sq_pessoa, * do.tx_valor, * ad.no_atributo_documento, * td.no_tipo_documento * FROM corporativo.pessoa AS pe * INNER JOIN corporativo.documento AS do ON do.sq_pessoa = pe.sq_pessoa * INNER JOIN corporativo.atributo_tipo_documento AS atd ON atd.sq_atributo_documento = do.sq_atributo_tipo_documento * INNER JOIN corporativo.atributo_documento AS ad ON ad.sq_atributo_documento = atd.sq_atributo_documento * INNER JOIN corporativo.tipo_documento AS td ON td.sq_tipo_documento = atd.sq_tipo_documento * WHERE (pe.sq_pessoa = :sq_pessoa); */ # obtem a entidade com base na anotacao $eDocumento = $this->getEntity(array('doc' => $this->annotation()->load()->class)); # cria entidade Pessoa $ePessoa = $this->getEntity(array('pes' => PessoaValueObject::factory())); # cria entidade AtributoTipoDocumento $eAtributoTipoDoc = $this->getEntity(array('atd' => AtributoTipoDocumentoValueObject::factory())); # cria entidade AtributoDocumento $eAtributoDocumento = $this->getEntity(array('ado' => AtributoDocumentoValueObject::factory())); # cria entidade TipoDocumento $eTipoDocumento = $this->getEntity(array('tdo' => TipoDocumentoValueObject::factory())); # cria objeto de consulta baseando-se em AttrTipoDoc $query = $this->getQuery($ePessoa)->join($eDocumento, $ePessoa->column('sqPessoa')->equals($eDocumento->column('sqPessoa')))->join($eAtributoTipoDoc, $eDocumento->column('sqAtributoTipoDocumento')->equals($eAtributoTipoDoc->column('sqAtributoTipoDocumento')))->join($eAtributoDocumento, $eAtributoTipoDoc->column('sqAtributoDocumento')->equals($eAtributoDocumento->column('sqAtributoDocumento')))->join($eTipoDocumento, $eAtributoTipoDoc->column('sqTipoDocumento')->equals($eTipoDocumento->column('sqTipoDocumento')))->where($ePessoa->column('sqPessoa')->equals($voPessoa->getSqPessoa())); return $this->execute($query); } catch (\Exception $excp) { throw new PersistException($excp->getMessage()); } }
public function findByTipo(AtributoTipoDocumentoValueObject $voAttrTipoDocumento) { try { /* * SELECT * atd.sq_atributo_documento, * AD.no_atributo_documento * FROM * corporativo.atributo_tipo_documento ATD * JOIN corporativo.atributo_documento AD ON AD.sq_atributo_documento = ATD.sq_atributo_documento * WHERE ATD.sq_tipo_documento = :sq_tipo_documento; */ # obtem a entidade com base na anotacao $eAttrTipoDoc = $this->getEntity(array('atd' => $this->annotation()->load()->class)); # cria entidade bioma atributo documento $eAttrDocum = $this->getEntity(array('ad' => AtributoDocumentoValueObject::factory())); # cria objeto de consulta baseando-se em AttrTipoDoc $query = $this->getQuery($eAttrTipoDoc)->join($eAttrDocum, $eAttrTipoDoc->column('sqAtributoDocumento')->equals($eAttrDocum->column('sqAtributoDocumento')))->where($eAttrTipoDoc->column('sqAtributoDocumento')->equals($voAttrTipoDocumento->getSqAtributoTipoDocumento())); # executa query return $this->execute($query); } catch (\Exception $excp) { throw new PersistException($excp->getMessage()); } }