robsonvleite / datalayer

The data layer is a persistent abstraction component of your database that PDO (O data layer é um componente para abstração de persistência no seu banco de dados que usa PDO com prepared statements)
https://www.upinside.com.br
MIT License
144 stars 53 forks source link

Busca Equivalente ao LIKE '%aaaa%' #37

Closed helisoncruz closed 3 years ago

helisoncruz commented 3 years ago

Como ficaria usando essa classe uma busca do tipo LIKE usando o .find(), onde posso buscar apenas uma das parte do texto digitando? por exemplo, nome de um cliente.

$customers = $model->find("cliente_nome = :name", "name=Nicolas Calebe da Mata")->fetch();

Onde eu buscaria apenas Nicolas e me retornaria todos os Nicolas independente do sobrenome.

euThiagoOliveira commented 3 years ago

use http_build_query e passe os parâmetros deve resolver

walissonhms commented 3 years ago

Opa @helisoncruz blz?

Você pode tentar assim:

​$​customers​ = $model->​find​(​"nome_cliente LIKE :sfn"​, ​"sfn=%{$search}%"​)->​fetch​(​true​);

ou

​$​customers​ = $model->​find​(​"nome_cliente LIKE '%' :sfn '%'"​, ​"sfn={$search}"​)->​fetch​(​true​);

helisoncruz commented 3 years ago

Depois de testar bastante, eu busquei referencia na documentação do PDO e a forma que deu certo foi:

$customers = $model->find("cliente_nome LIKE :name", "name=%{$search}%")->fetch(true);

omnispecies commented 3 years ago

@helisoncruz e @walissonhms Podem abrir um pull request para acrescentar isso na documentação?