Closed tiagocaus closed 4 years ago
Como faço para incluir o operador IN na função FIND?
public function find(?string $terms = null, ?string $params = null, string $columns = "*"): DataLayer { if ($terms) { $this->statement = "SELECT {$columns} FROM {$this->entity} WHERE {$terms}"; parse_str($params, $this->params); return $this; } $this->statement = "SELECT {$columns} FROM {$this->entity}"; return $this; }
Boa tarde, veja meu pull request que aplico estas funcionalidades.
https://github.com/rodineiti/datalayer/blob/develop/README.md
@rodineiti Não entendi como usar o IN, no FIND. Poderia dar um exemplo?
@rodineiti Não entendi como usar o IN, no FIND. Poderia dar um exemplo?
Olá @hostcia , você está utilizando a LIB DataLayer no seu projeto certo?
Neste caso meu pull request precisaria ter sido aceito para que quando você atualizasse a Lib com composer update, ter acesso aos novos métodos que eu criei, que mostro neste exemplo como usar:
https://github.com/rodineiti/datalayer/blob/develop/example/where_example.php
<?php
/**
* FIND WITH WHEREIN EXAMPLE
*/
$model = new User();
print "<h1>find with whereIn</h1>";
$users = $model
->whereIn("id", [53,55])
->find()
->fetch(true);
if ($users) {
foreach ($users as $user) {
dd($user->data());
}
} else {
echo "<h2>Not Users</h2>";
}
Mas ainda o @robsonvleite não deve ter visto o pull request.
Neste caso você poderia criar outro método na sua Model, como findCustom passando sua query diretamente montada, e os parametros, seria semelhante a Find atual, só que sem os termos, algo como:
<?php
public function findCustom(string $query) {
$this->query = $query;
return $this;
}
$model = new SuaModel();
$query = "select * from table where id in (1,2,3)";
$model->findCustom($query)->fetch(true);
Espero que ajude, por enquanto vamos aguardar o aceite do pull request, depois ficará muito mais fácil e flexível.
@rodineiti entendi, então tem que esperar ele aceitar, né? Enviei uma mensagem para ele.
@rodineiti entendi, então tem que esperar ele aceitar, né? Enviei uma mensagem para ele.
Ele não precisa aceitar, só pegar o código direto
Como faço para incluir o operador IN na função FIND?
public function find(?string $terms = null, ?string $params = null, string $columns = "*"): DataLayer { if ($terms) { $this->statement = "SELECT {$columns} FROM {$this->entity} WHERE {$terms}"; parse_str($params, $this->params); return $this; } $this->statement = "SELECT {$columns} FROM {$this->entity}"; return $this; }
Assim:
$users = (new User())
->find("first_name IN(:na, :nb, :nc)", "na=Robson&nb=Gustavo&nc=Kaue")
->fetch(true);
Como faço para incluir o operador IN na função FIND?