我们渴望有条件的分支
We are craving with conditional branch
我的if语句很难读
ProjectController.php
public function index(Request $request)
{
$cats = Category::all();
$users = User::all();
if(!empty($request->project_name && $request->requester && $request->user_name && $request->status && $request->requester_tell))
{
$view = Project::where('project_name', 'like', '%'. $request->project_name .'%')->where('project_name', 'like', '%'. $request->requester .'%')->get();
} if(!empty($request->project_name && $request->requester && $request->user_name && $request->status))
{
$view = Project::where('project_name', 'like', '%'. $request->project_name .'%')->paginate(10)->get();
}else if(!empty($request->project_name && $request->requester && $request->user_name))
{
$view = Project::where('requester', 'like', '%'. $request->requester .'%')->paginate(10)->get();
} else if(!empty($request->project_name && $request->requester))
{
$view = Project::where('user_name', 'like', '%'. $request->user_name .'%')->paginate(10)->get();
} else if(!empty($request->project_name))
{
$view = Project::where('status', 'like', '%'. $request->status .'%')->paginate(10)->get();
} else if(!empty($request->project_name || $request->requester || $request->user_name || $request->status || $request->requester_tell))
{
$view = Project::where('requester_tell', 'like', '%'. $request->requester_tell .'%')->paginate(10)->get();
} else if(!empty($request->requester && $request->user_name))
{
} else if(!empty($request->status && $request->requester_tell))
{
} else if(!empty($request->requester && $request->requester_tell))
{
} else {
};
写到这里了,想知道有没有更好的写法
我想从数据库中拉取符合搜索条件的数据
原来都包含null
您可以创建一个键数组并在该数组上循环。在循环内部,您可以检查它是否为空,如果不是,则应用条件。
$relevantKeys = ["project_name", "requester", "user_name", "status", "requester_tell"];
$query = Project::select("*");
foreach ($relevantKeys as $value) {
if (!empty($request->{$value})) {
$query = $query->where($value, 'like', '%' . $request->{$value} . '%');
}
}
$view = $query->paginate(10)->get();
Note:- I am considering static keys as request object may have other data which is not relevant for filter operation.
我的if语句很难读
ProjectController.php
public function index(Request $request)
{
$cats = Category::all();
$users = User::all();
if(!empty($request->project_name && $request->requester && $request->user_name && $request->status && $request->requester_tell))
{
$view = Project::where('project_name', 'like', '%'. $request->project_name .'%')->where('project_name', 'like', '%'. $request->requester .'%')->get();
} if(!empty($request->project_name && $request->requester && $request->user_name && $request->status))
{
$view = Project::where('project_name', 'like', '%'. $request->project_name .'%')->paginate(10)->get();
}else if(!empty($request->project_name && $request->requester && $request->user_name))
{
$view = Project::where('requester', 'like', '%'. $request->requester .'%')->paginate(10)->get();
} else if(!empty($request->project_name && $request->requester))
{
$view = Project::where('user_name', 'like', '%'. $request->user_name .'%')->paginate(10)->get();
} else if(!empty($request->project_name))
{
$view = Project::where('status', 'like', '%'. $request->status .'%')->paginate(10)->get();
} else if(!empty($request->project_name || $request->requester || $request->user_name || $request->status || $request->requester_tell))
{
$view = Project::where('requester_tell', 'like', '%'. $request->requester_tell .'%')->paginate(10)->get();
} else if(!empty($request->requester && $request->user_name))
{
} else if(!empty($request->status && $request->requester_tell))
{
} else if(!empty($request->requester && $request->requester_tell))
{
} else {
};
写到这里了,想知道有没有更好的写法 我想从数据库中拉取符合搜索条件的数据
原来都包含null
您可以创建一个键数组并在该数组上循环。在循环内部,您可以检查它是否为空,如果不是,则应用条件。
$relevantKeys = ["project_name", "requester", "user_name", "status", "requester_tell"];
$query = Project::select("*");
foreach ($relevantKeys as $value) {
if (!empty($request->{$value})) {
$query = $query->where($value, 'like', '%' . $request->{$value} . '%');
}
}
$view = $query->paginate(10)->get();
Note:- I am considering static keys as request object may have other data which is not relevant for filter operation.