gpt4 book ai didi

laravel - 如何重构此搜索过滤器查询?

转载 作者:行者123 更新时间:2023-12-02 16:27:53 25 4
gpt4 key购买 nike

我需要在多个表中搜索。我正在检查每个请求对象。例如:我正在检查请求是否具有该对象,然后将其连接到我的主查询并最后获取该查询结果。它看起来并不好,也不好。如何在 Laravel 中更好地改进此搜索查询过滤器?注意:我在 stackoverflow 中搜索了问题,但它们只处理一种模型。

$query = DB::table('clients')
->leftjoin('ecommerce_contacts','ecommerce_contacts.client_id', '=', 'clients.id')
->select('ecommerce_contacts.*', 'clients.*')
->where('clients.is_deleted', '=', '0');

if(!is_null($request->fname)){
$query+=->where('clients.fname', 'like', '%$request->fname%');
}
if(!is_null($request->lname)){
$query+=->where('clients.lname', 'like', '%$request->lname%');
}
if(!is_null($request->gender)){
$query+=->where('clients.sex', $request->sex);
}
if(!is_null($request->number)){
$query+=->where('ecommerce_contacts.sex', 'like', $request->number);
}
if(!is_null($request->registered_date)){

}
if(!is_null($request->purchase)){

}
$client = $query->get();
$data = json_encode($clients);
return $data;

最佳答案

使用conditional clauses :

DB::table('clients')
->leftjoin('ecommerce_contacts','ecommerce_contacts.client_id', '=', 'clients.id')
->select('ecommerce_contacts.*', 'clients.*')
->where('clients.is_deleted', '=', '0')
->when(request()->has('fname'), function ($query) {
return $query->where('clients.fname', 'like', '%' . request()->fname . '%');
})
->when(request()->has('lname'), function ($query) {
return $query->where('clients.lname', 'like', '%' . request()->lname . '%');
})
->when(request()->has('gender'), function ($query) {
return $query->where('clients.sex', '=', request()->gender);
})
...

关于laravel - 如何重构此搜索过滤器查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53741515/

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