Использование Eloquent ORM в Laravel для выполнения поиска по базе данных с помощью LIKE



Я хочу использовать активное построение записей Eloquent для создания поискового запроса, но это будет похожий поиск. Я нашел User::find($term) или User::find(1), но это не генерирует подобное утверждение. Я не ищу прямого ответа, но если бы кто-то мог хотя бы дать мне направление, чтобы посмотреть, что было бы здорово!

769   5  

5 ответов:

вы можете сделать поиск базы данных, используя как с этим синтаксисом:

Model::where('column', 'LIKE', '%value%')->get();

Если вам нужно часто использовать LIKE, вы можете немного упростить проблему. Пользовательский метод типа () может быть создан в модели, которая наследует Eloquent ORM:

public  function scopeLike($query, $field, $value){
        return $query->where($field, 'LIKE', "%$value%");
}

затем вы можете использовать этот метод таким образом:

User::like('name', 'Tomas')->get();

FYI, список операторов (содержащий как и все остальные) в код:

/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php

protected $operators = array(
    '=', '<', '>', '<=', '>=', '<>', '!=',
    'like', 'not like', 'between', 'ilike',
    '&', '|', '^', '<<', '>>',
    'rlike', 'regexp', 'not regexp',
);

отказ от ответственности:

ответ Джоэла Ларсона верен. Получил мой голос.

Я надеюсь, что этот ответ прольет больше света на то, что доступно через красноречивый ORM (указывает людям в правильном направлении). Хотя ссылка на документацию будет далеко лучше, что ссылка оказалась недостижимой.

используйте двойные кавычки вместо одинарной кавычки, например:

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");
}

Если вам не нравятся двойные кавычки, как я, это будет работать для вас в одинарные кавычки:

$value = Input::get('q');
$books = Book::where('name', 'LIKE', '%' . $value . '%')->limit(25)->get();

return view('pages/search/index', compact('books'));

Comments

    Ничего не найдено.