Получить коллекцию, составленную из оператора SQL LIKE, используя eloquent - PullRequest
2 голосов
/ 07 июня 2019

У меня есть поисковая форма на моем сайте; когда пользователь вводит поисковый термин, он передается в строку URL-запроса. Я хочу использовать эти данные для создания коллекции с использованием оператора SQL LIKE.

Я установил контроллер «Product» с методом поиска.

public function search()
{

    $searchTerm = request('s');

    $products  = Product::where('productTitle', 'LIKE', '%{{$searchTerm}}%');

    return $products;

    return view('search', [
        'searchTerm' => $searchTerm,
        'products' => $products
    ]);
}

Однако, когда я запускаю это, я получаю следующую ошибку:

Объект класса Illuminate \ Database \ Eloquent \ Builder не может быть преобразован в строку

Ответы [ 2 ]

4 голосов
/ 07 июня 2019

Прежде всего вам не нужно {{ }} в строке, просто сделайте следующее:

$products  = Product::where('productTitle', 'LIKE', "%$searchTerm%")->get();

Обратите внимание, что ->get() в конце - это то, что возвращает коллекцию.

0 голосов
/ 07 июня 2019

сделать это

public function search()
{

    $searchTerm = request('s');

    $data['products']  = Product::where('productTitle', 'LIKE', '%$searchTerm%')->get();

        return view('search',$data);
}

Это возвращает данные на ваш взгляд. затем, по вашему мнению, вы запускаете @foreach @endforeach, чтобы отобразить результат как:

@extends('app.layout')

@section('content')

  @foreach( $products as $p)

    {{ $p->searchTerm }}
    {{ $p->products }}

  @endforeach

@endsection
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...