$usuario = new Usuario;
$usuario->where("nome like 'hugo%'")->find();
Lumine irá procurar normalmente, porém, se fizermos isto:
$usuario->where('nome like ?', $_GET['nome'])->find();
Não irá funcionar, por que, conforme explicado na documentação desta cláusula, Lumine não irá tratar os campos da string "automagicamente", pois em sua consulta você poderia ter dois campos com o mesmo nome, porém de tabelas e tipos diferentes. Logo, é necessário que haja uma forma pela qual Lumine identifique de qual entidade é o campo. Você poderá fazê-lo de 3 formas:
$usuario->alias('u')
->where('u.nome like ?', $_GET['nome']);
$usuario->where('{nome} like ?', $_GET['nome']);
$usuario->where('{Usuario.nome} like ?', $_GET['nome']);
$usuario->alias('u')
->where('u.nome like ? and u.email = ? and u.senha = ?', $_GET['nome'], $_GET['email'], $_GET['senha'])
->find();
Você também poderá verificar se o campo está dentro de uma lista.
$codigos = array(3, 7, 8, 13, 103);
$usuario->alias('u')
->where('u.codusuario IN ( ? )', $codigos)
->find();
Comparações testadas:
Atenção: este método só funciona com os membros que existam em suas entidades. Ele não substituirá expressões criadas na clausula SELECT ou qualquer outra parte.
$dados = array(
'email' => 'eu@hufersil.com.br',
'senha' => '12345'
);
$usuario->alias('u')
->where('u.email = :email AND u.senha = :senha', $dados)
->find();
Exemplo prático
Com os códigos abaixo, crie um arquivo chamado prepared.php e grave em sua pasta de testes para poder acessar via navegador.
<?php
// importa as configurações
require_once 'config.php';
// importa a classe de usuário
Lumine::import('Usuario');
// hablita o log
Lumine_Log::setLevel(3);
// instancia o usuario
$usuario = new Usuario;
$usuario->alias('a') // muda o alias
->where('a.email = :email', $_GET) // indica o email que vem do GET
->count(); // conta os usuarios com o mesmo email
// reinicia o objeto
$usuario->reset();
// muda o alias
$usuario->alias('u')
// indica o email e senha
->where('u.email = ? AND u.senha = ?', $_GET['email'], $_GET['senha'])
// efetua a consulta
->find();
Agora, em seu navegador, acesse o endereço que você criou com os dados na URL, no meu caso ficou:
http://localhost/teste/prepared.php?email=eu@hufersil.com.br&senha=12345
Na próxima veremos como fazer consultas com união de classes!
@braços e fiquem com Deus!