可扩展查询构造器extract函数

本文介绍了一种在Laravel框架中通过封装查询条件来提高代码可维护性的方法,利用extract函数和闭包实现动态where条件,适用于参数个数不固定的场景。

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值