laravel在查询中显示请求值none



我想用price过滤一些数据,但当我们回显请求值时,它给出了正确的值,但当我把它放在查询中时,它显示"quot;

我的ajax调用

<script>
$(document).ready(function() {
$("#price_filter").on("change", function() {
var price = this .value;
var _token = $('input[name="_token"]').val();
$.ajax({
url:"{{ route('indexController.pricefilter') }}",
type:"POST",
dataType:"json",
data:{price,_token},
success: function(response){
console.log(response);
// $("#filterdata").html(response);
}
});
})
})  
</script>

我的路线

Route::post('indexController/pricefilter','indexController@pricefilter')->name('indexController.pricefilter');

我的功能

public function pricefilter(Request $request){
echo $price = $request->get('price');
return $products = DB::table('products')
->where('price','=', $price)
->tosql();
}

我的查询结果

400
select * from `products` where `price` = ?

它实际上显示为

select * from `products` where `price` = 400

这是结果

array:1 [
0 => array:3 [
"query" => "select * from `products` where `price` <= ?"
"bindings" => array:1 [
0 => "1001"
]
"time" => 3.87
]
]

您看到了问号,因为laravel使用了绑定的参数

products中选择*,其中price=?

当在数据库上执行查询时,将从products中选择*,其中price=400

不管怎样:如果你想要你的sql查询及其参数,你可以使用这个函数:

public function getEloquentSqlWithBindings($query)
{
return vsprintf(str_replace('?', '%s', $query->toSql()), collect($query->getBindings())->map(function ($binding) {
return is_numeric($binding) ? $binding : "'{$binding}'";
})->toArray());
}

现在:

public function pricefilter(Request $request){
$query= $products = DB::table('products')
->where('price','=', $price);
echo($this->getEloquentSqlWithBindings($query));
return $query;
}

这对Laravel来说是正常的

要查看真实的数据库查询,可以使用

DB::enableQueryLog();
// and then you can get query log
dd(DB::getQueryLog());

所以你的代码看起来像这个

public function pricefilter(Request $request){
echo $price = $request->get('price');
DB::enableQueryLog();
$products = DB::table('products')
->where('price','=', $price)
->get();
dd(DB::getQueryLog());
return $products;
}

相关内容

  • 没有找到相关文章

最新更新