/** * Selecionar um registro através da chave primária (UK - Unique Key) * * @param mixed $c Nome do campos a ser pesquisado * @param mixed $v Valor a ser pesquisado na UK * @param string $a Alias da tabela principal configurado na consulta * * @return bool * @throws \DL3Exception */ public function selecionarUK($c, $v, $a = null) { if (!method_exists($this, 'listar')) { throw new \DL3Exception(printf(ERRO_PADRAO_METODO_NAO_EXISTE, 'listar'), 1500); } // Fim if $al = !isset($a) ? '' : "{$a}."; if (is_array($c)) { $cv = array_combine($c, $v); $tf = []; foreach ($cv as $k => $t) { $tf[] = "{$al}{$this->bd_prefixo}{$k} = " . \Funcoes::varExportBD($t); } // Fim foreach $flt = implode(' AND ', $tf); } else { $flt = "{$al}{$this->bd_prefixo}{$c} = " . \Funcoes::varExportBD($v); } // Fim if $ls = $this->listar($flt, null, "{$al}*", 0, 1, 0); /* * Informar se o registro foi selecionado corretamente antes de carregar as informações * Dessa forma é fácil identificar se o registro foi selecionado durante o carregamento das informações e, assim, * poder recuperar valores criptografados, por exemplo. Ex. de utilização: Hash de recuperação de senha */ $this->reg_vazio = !(bool) $ls; if (!$this->reg_vazio) { $dd = array_combine(array_map(function ($v) { return preg_replace("~^{$this->bd_prefixo}~", '', $v); }, array_keys($ls)), array_values($ls)); \Funcoes::vetor2Objeto($dd, $this); } // Fim if # Indicar que o registro foi selecionado return !$this->reg_vazio; }