我有这样的条件:
if($_POST['title'])
{
$query
->orWhere('title' , 'LIKE' , '%' . $_POST['title'] . '%');
}
elseif($_POST['description'])
{
$query
->orWhere('description' , 'LIKE' , '%' . $_POST['description'] . '%');
}
elseif($_POST['tag'])
{
$query
->orWhere('tag' , 'LIKE' , '%' . $_POST['tag'] . '%');
}
elseif($_POST['title'] && $_POST['tag'] )
{
$query
->orWhere('title' , 'LIKE' , '%' . $_POST['title'] . '%')
->orWhere('tag' , 'LIKE' , '%' . $_POST['tag'] . '%');
}
.
.
.
我现在想在PHP中以较短的方式编写这段代码吗?
这是错的,但例如:
$query
if($_POST['title']) ->orWhere('title' , 'LIKE' , '%' . $_POST['title'] . '%');
if($_POST['tag']) ->orWhere('tag' , 'LIKE' , '%' . $_POST['tag'] . '%');
if($_POST['description']) ->orWhere('description' , 'LIKE' , '%' . $_POST['description'] . '%');
答案 0 :(得分:1)
这不完全但是,您可以了解如何制作通用功能以进行检查
$params = ["title","description","tag"];
$query = orIfMatchAll($query,$params);
function orIfMatchAll($query,$params){
foreach($params as $param){
if(isset($_POST[$param]){
$query->orWhere($param,'LIKE',"%".$_POST[$param]."%");
}
}
return $query;
}