gpt4 book ai didi

php - 这个多重可选过滤器的最佳解决方案是什么?

转载 作者:行者123 更新时间:2023-12-01 00:17:37 25 4
gpt4 key购买 nike

这些都是可选字段,所以我是否必须编写多个带条件的查询,或者有什么方法可以使用 Laravel 来处理这个问题吗?查询会是什么样子?

谢谢

enter image description here

最佳答案

这在一定程度上取决于过滤器的提交方式,但您可以执行以下两项操作之一(可能还有更多...):

public function listCars(Request $request)
{
$cars = Car::when($request->get('make'), function ($query, $make) {
$query->where('make', $make);
})
->when($request->get('model'), function ($query, $model) {
$query->where('model', $model);
})
->...
->get();

// do what you have to do
}

所以您基本上将查询构建器调用包装在 when($value, $callback) 中,它只会执行 $callback如果$value评估为真。当您使用 $request->get('parameter') 检索未设置的参数时,它将返回 null 并且不执行回调。但要小心,如果 $value0它也不会执行回调。所以请确保您没有将其作为索引。

除此之外,你也可以做同样的事情,但用一些不那么 Eloquent 表达......

public function listCars(Request $request)
{
$query = Car::query();

if($request->filled('make')) {
$query->where('make', $request->get('make'));
}
if($request->filled('model')) {
$query->where('model', $request->get('model'));
}

// some more filtering, sorting, ... here

$cars = $query->get();

// do what you have to do
}

关于php - 这个多重可选过滤器的最佳解决方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51394497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com