Я хочу использовать активное создание записей для создания поискового запроса, но это будет LIKE-поиск. Я нашел User::find($term)
или User::find(1)
, но это не создает аналогичный оператор. Я не ищу прямого ответа, но если кто-то может хотя бы дать мне направление, чтобы посмотреть, это будет здорово!
Использование Eloquent ORM в Laravel для выполнения поиска базы данных с использованием LIKE
Ответ 1
Вы можете выполнять поиск базы данных с использованием LIKE с помощью этого синтаксиса:
Model::where('column', 'LIKE', '%value%')->get();
Ответ 2
Если вам нужно часто использовать LIKE, вы можете немного упростить эту проблему. В модели, которая наследует Eloquent ORM, может быть создан пользовательский метод like():
public function scopeLike($query, $field, $value){
return $query->where($field, 'LIKE', "%$value%");
}
Итак, вы можете использовать этот метод таким образом:
User::like('name', 'Tomas')->get();
Ответ 3
FYI, список операторов (содержащий как и все остальные) находится в коде:
/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php
protected $operators = array(
'=', '<', '>', '<=', '>=', '<>', '!=',
'like', 'not like', 'between', 'ilike',
'&', '|', '^', '<<', '>>',
'rlike', 'regexp', 'not regexp',
);
отказ от ответственности:
Ответ Джоэл Ларсон правильный. Получил мой взнос.
Я надеюсь, что этот ответ проливает больше света на то, что доступно через Eloquent ORM (указывает на людей в правильном направлении). Хотя ссылка на документацию будет далеко лучше, эта ссылка оказалась неуловимой.
Ответ 4
Используйте двойные кавычки вместо одиночной кавычки, например:
where('customer.name', 'LIKE', "%$findcustomer%")
Ниже мой код:
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");
}
Ответ 5
Если вам не нравятся двойные кавычки, подобные мне, это будет работать для вас с одинарными кавычками:
$value = Input::get('q');
$books = Book::where('name', 'LIKE', '%' . $value . '%')->limit(25)->get();
return view('pages/search/index', compact('books'));