$ book = array ('book1', 'book2'); Les numéros des éléments du tableau $ book sont variables. il peut avoir 2 éléments ou 20 éléments
Je dois faire une requête comme celle-ci:
select * from book where bookname like %book1% or bookname like %book2%
Pour faire cette requête dans laravel 5 il y a une option:
$name = DB::Table('bookinfo')
->select('*')
->wherein('bookname',$book)
->get();
mais il utilise =
opérateur J'ai besoin d'utiliser like
opérateur
Merci à tous de m'aider mais je l'ai résolu en faisant:
$book = array('book2','book3','book5');
$name = DB::Table('bookinfo')
->select('BookName', 'bookId')
->Where(function ($query) use($book) {
for ($i = 0; $i < count($book); $i++){
$query->orwhere('bookname', 'like', '%' . $book[$i] .'%');
}
})->get();
Pour une requête dynamique avec 1 ou n éléments, utilisez votre instruction comme une collection: pour le "like", vous pouvez utiliser une instruction Raw:
$collection = DB::Table('bookinfo')->select('*');
foreach($book as $key => $element) {
if($key == 0) {
$collection->where(DB::raw('bookname like %'.$element.'%'));
}
$collection->orWhere(DB::raw('bookname like %'.$element.'%'));
}
$name = $collection->get();
http://laravel.com/docs/5.1/queries
Expressions brutes
ou vous pouvez l'utiliser de cette façon:
$collection = DB::Table('bookinfo')->select('*');
foreach($book as $key => $element) {
if($key == 0) {
$collection->where('bookname', 'like', '%'.$element.'%');
}
$collection->orWhere('bookname', 'like', '%'.$element.'%');
}
$name = $collection->get();