Пример #1
0
 /**
  * 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;
 }