laravel Eloquent / QueryBuilder - Почему значение переменной $ prod становится "?" в запросе Sql? - PullRequest
1 голос
/ 30 января 2020

Извините за мою грамматику Engli sh, ..

Я хочу выполнить этот запрос, но получаю 0 результатов, .. я пытаюсь проверить -> в Sql () функцию, которую я видел значение становится? вместо значения "свинина". почему стал (?) знак вопроса? и как это исправить?

это мои laravel запросы с использованием модели

$items = Item::where("item_type_id", "!=", 1)
            ->where(function ($query) use ($prod){
                    $query->where("description", "like", "'%$prod%'")
                    ->orWhere("id", "'%$prod%'");
            })
            ->toSql(); 
dd($items);

и результат такой, и параметры становятся "?".

"select * from `items` where `item_type_id` != ? and (`description` like? or `id` =? )"

Ответы [ 2 ]

2 голосов
/ 30 января 2020

? это привязки вызова, используемые для SQL инъекции. если вы хотите получить переменную bindings, вы можете использовать метод getBindings().

Проверить более подробную информацию о getBindings ()

$items = Item::where("item_type_id", "!=", 1)
            ->where(function ($query) use ($prod){
                    $query->where("description", "like", "'%$prod%'")
                    ->orWhere("id", "'%$prod%'");
            });

$sqlquery = $items->toSql(); 
$bindings = $items->getBindings();

Другой способ заменить ? до значения ниже.

$sql_with_bindings = str_replace_array('?', $items->getBindings(), $items->toSql());

Еще один способ проверить последний выполненный запрос - DB::enableQueryLog().

\DB::enableQueryLog();
$items = Item::where("item_type_id", "!=", 1)
              ->where(function ($query) use ($prod){
                   $query->where("description", "like", "'%$prod%'")
                         ->orWhere("id", "'%$prod%'");
                })->get();
dd(\DB::getQueryLog());
1 голос
/ 30 января 2020
// Your code is Wrong. Please try this code
        $query = $request->input('query');
        $items = Item::where('description','LIKE',"%$query%",)->get();
...