Je veux utiliser l'enregistrement actif d'Eloquent pour construire une requête de recherche, mais il s'agira d'une recherche LIKE. J'ai trouvé le User::find($term)
o User::find(1)
mais cela ne génère pas de déclaration similaire. Je ne cherche pas une réponse directe, mais si quelqu'un pouvait au moins me donner une direction à suivre, ce serait génial !
Réponses
Trop de publicités?Si vous devez utiliser fréquemment LIKE, vous pouvez simplifier un peu le problème. Une méthode personnalisée comme () peut être créée dans le modèle qui hérite de l'ORM Eloquent :
public function scopeLike($query, $field, $value){
return $query->where($field, 'LIKE', "%$value%");
}
Vous pouvez donc utiliser cette méthode de cette manière :
User::like('name', 'Tomas')->get();
Pour info, la liste des opérateurs (contenant comme et tous les autres) est en code :
/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php
protected $operators = array(
'=', '<', '>', '<=', '>=', '<>', '!=',
'like', 'not like', 'between', 'ilike',
'&', '|', '^', '<<', '>>',
'rlike', 'regexp', 'not regexp',
);
décharge de responsabilité :
La réponse de Joel Larson est correcte. J'ai eu mon upvote.
J'espère que cette réponse apportera plus de lumière sur ce qui est disponible via l'ORM Eloquent ( oriente les gens dans la bonne direction ). Alors qu'un lien vers la documentation serait loin mieux, ce lien s'est avéré insaisissable.
Utilisez des guillemets doubles au lieu de guillemets simples, par exemple :
where('customer.name', 'LIKE', "%$findcustomer%")
Voici mon code :
public function searchCustomer($findcustomer)
{
$customer = DB::table('customer')
->where('customer.name', 'LIKE', "%$findcustomer%")
->orWhere('customer.phone', 'LIKE', "%$findcustomer%")
->get();
return View::make("your view here");
}