extract 提取
当条件where中参数个数不固定时,或新增参数,多处调用,进行的一种便于维护的封装。
如在Goods模型中,封装查询条件。
namespace Model\Goods
/*返回闭包*/
public static function condition(array $conditions)
{
return function($query)use($conditions){
extract($conditions);
if(!empty($keyword)){
$query->where('name','like','%'.$keyword.'%');
}
if(!empty($status)){
$query->where('status',$status);
}
...
//更多
};
}
控制器中
以laravel为例
Use App\Model\Goods;
public function getList(Request $request)
{
$conditions = $request->input();
$limit = isset($condition['limit'])?isset($condition['limit']):10;
$where=Goods::condition($conditions);
//var_dump($where);die();
$data = Goods::where($where)
->pagenate($limit)
->get();
...
}
如参数为?keyword=a&status=1&…
extract函数,将a赋值给$keyword,将1赋值给$status。
本文介绍了一种在Laravel框架中通过封装查询条件来提高代码可维护性的方法,利用extract函数和闭包实现动态where条件,适用于参数个数不固定的场景。
1210

被折叠的 条评论
为什么被折叠?



