Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera!
Vejam se vocês podem me ajudar. Estou alterando um framework PHP (que montaram internamente aqui na agência no passado) que costumo utilizar para receber uma condição a mais.
Estou tentando fazer com que os selects possam receber um... select interno.
A principio, a consulta é rodada certinha, e tudo OK. Porém, agora tenho que jogar os resultados destas colunas em objetos. Para isso, atualmente tenho o seguinte trecho de código:
for ($j = 0; $j < $total_campos; $j++)
{
if (preg_match("(\.)", $this->campos[$j])) // * Se tem algum ponto na string (no caso de um alias)
{
$valor_campo = substr($this->campos[$j], strpos($this->campos[$j], ".") + 1, strlen($this->campos[$j]));
$valores[$i][$valor_campo] = $rs[$valor_campo];
}
else
{
$valores[$i][$this->campos[$j]] = $rs[$this->campos[$j]];
}
}
Aqui estou tendo um problema. Todos os registros no for estão caindo na condição do preg_match.
Os resultados de $this->campos[$j] são:
pro.proId
usu.usuId
usu.usuNome
usu.usuEmail
usu.usuSenha
usu.usuImagem
usu.usuAtivo
usu.usuExcluido
usu.usuDataCadastro
alu.aluId
ins.insNome
(SELECT usuNome FROM sistema_usuario WHERE usuId = pro.usuId) AS proNome
Eu não gostaria que uma condição em específico não caisse neste preg_match.
(SELECT usuNome FROM sistema_usuario WHERE usuId = pro.usuId) AS proNome
Ou seja, caso tivesse uma condição assim (entre parenteses e o AS), retornasse apenas o que vem depois do AS.
Como faço? hahahah
EDIT
Tentei dessa maneira, sem alterar a expressão regular... será que é o jeito certo? Ele funciona certo, mas não sei se é a melhor maneira.
for ($j = 0; $j < $total_campos; $j++)
{
if (preg_match("(\.)", $this->campos[$j]))
{
// * Verifica se é um select interno
if(str_contains($this->campos[$j]," AS "))
{
$valor_campo = substr($this->campos[$j],strpos($this->campos[$j]," AS "));
$valor_campo = str_replace(" AS ","",$valor_campo);
$valores[$i][$valor_campo] = $rs[$valor_campo];
}
// * Caso seja apenas um alias comum...
else
{
$valor_campo = substr($this->campos[$j], strpos($this->campos[$j], ".") + 1, strlen($this->campos[$j]));
$valores[$i][$valor_campo] = $rs[$valor_campo];
}
}
else
{
$valores[$i][$this->campos[$j]] = $rs[$this->campos[$j]];
}
}Carregando comentários...