Аргумент 1, передаваемый в Illuminate \ Database \ Connection :: prepareBindings (), должен иметь тип массива, значение NULL - PullRequest
0 голосов
/ 18 января 2020
public function search(Request $request)
{
    $search = $request->get('search');
    $image = DB::select(`produits.id`, `produits.name`, `categories.name`, `produits.description`, `produits.volume`, `produits.poids`, `users.name`, `users.numtel`)
        ->from(`produits`)
        ->from(`users`)
        ->from(`categories`)
        ->where(`produits.category_id`, `=`, `categories.id`)
        ->where(`users.id`, `=`, `produits.user_id`)
        ->where(`produits.description`, `=`, [$search])
        ->get();


    return view('home', ['produits' => $image]);
}

Это ошибка, которую я получаю:

Аргумент 1, передаваемый в Illuminate \ Database \ Connection :: prepareBindings (), должен иметь тип массива, ноль задан

1 Ответ

0 голосов
/ 18 января 2020

Существует довольно много проблем с кодом, который вы показали выше.

Во-первых, используйте одинарные или двойные кавычки (' или "), а не обратные тики ( `).


При вызове select() прямой из DB фасада будет вызываться метод select() для Connection, который отличается от метода select() из класса Builder. Выбор в экземпляре Connection по существу предназначен для выполнения необработанных запросов.

Чтобы получить экземпляр Builder, вы можете либо начать цепочку с query() или table() (что по сути является from() метод) Например,

DB::table('table_name) 

или

DB::query()->from('table_name')

AFAIK, вы не можете указать несколько таблиц с помощью построителя запросов, поэтому вместо этого вам нужно будет объединить таблицы.


В конечном итоге ваш запрос должен выглядеть примерно так:

DB::table('produits')
    ->select('produits.id', 'produits.name', 'categories.name', 'produits.description', 'produits.volume', 'produits.poids', 'users.name', 'users.numtel')
    ->join('users', 'users.id', 'produits.user_id')
    ->join('categories', 'produits.category_id', 'categories.id')
    ->where('produits.description', $search)
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...