web-dev-qa-db-fra.com

Équivalent de Laravel-5 'LIKE' (Eloquent)

J'utilise le code ci-dessous pour extraire des résultats de la base de données avec Laravel 5.

BookingDates::where('email', Input::get('email'))->orWhere('name', 'like', Input::get('name'))->get()

Cependant, le orWhereLike ne semble correspondre à aucun résultat. Qu'est-ce que ce code produit en termes d'instructions MySQL?

J'essaie de réaliser quelque chose comme ce qui suit:

select * from booking_dates where email='[email protected]' or name like '%John%'

Merci d'avance.

115
V4n1ll4

Si vous voulez voir ce qui est exécuté dans la base de données, utilisez dd(DB::getQueryLog()) pour voir quelles requêtes ont été exécutées.

Essaye ça

BookingDates::where('email', Input::get('email'))
    ->orWhere('name', 'like', '%' . Input::get('name') . '%')->get();
305
Pawel Bieszczad

Je pense que c'est mieux, en suivant les bonnes pratiques de passage de paramètres à la requête:

BookingDates::whereRaw('email = ? or name like ?', [$request->email,"%{$request->name}%"])->get();

Vous pouvez le voir dans la documentation, Laravel 5.5.

Vous pouvez également utiliser l'éclaireur Laravel et faciliter la recherche. Voici la documentation.

0
JaredDmz