有一个绝佳的地方可以进行调用,那就是模型中的 scope 。 classBookextendsModel{publicfunctionscopeFilter($query,QueryFilter$filters){return$filters->apply($query);}} 最后,我们原来控制器的方法将改为下面的样子: publicfunctionindex(BookFilter$filters){returnBook::filter($filters)->get();} 这样我们就完...
在上面的示例中,我们在User模型中定义了一个名为scopeFilter的方法,并接受一个UserFilters实例作为参数。然后,我们调用UserFilters实例的apply方法,并将查询对象传递给它。 应用过滤器:现在,我们可以在查询数据时应用过滤器了。可以通过调用模型的filter方法,并传递一个UserFilters实例来实现这一点。
有一个绝佳的地方可以进行调用,那就是模型中的 scope 。 注意:scopeFilter($query, QueryFilter $filters) 传参是抽象类,并使用该类调用了方法,所以实际使用时要传递实例化的继承类。 Copy Highlighter-hljs classBookextendsModel{ public function scopeFilter($query,QueryFilter$filters) {return$filters->apply(...
class Order extends Model { // ... // 定义本地作用域 public function scopeFilter($query, $filters) { if ($filters['status']) { $query->where('status', $filters['status']); } if ($filters['date_range']) { $dates = explode(' - ', $filters['date_range']); $query->...
huangxingle2009 未填写
1. 创建一个名为“Filterable”的trait类并写一个scope方法 Create a trait namedFilterableand create a scope class Filterable{ public functionscopeFilter($query, array $through) { returnapp(Pipeline::class) ->send($query) ->through($through) ...
The remove method also receives a Builder object and is responsible for reversing the action taken by apply. In other words, remove should remove the where clause (or any other clause) that was added. So, for our SoftDeletingScope, the methods look something like this:...
Illuminate集合类似于php数组,拥有map(), filter(), reduce(), each()等方法。 map: 根据数组中的每一项设定函数,返回函数处理后的新数组。 filter: 根据函数过滤数组中的每一项,返回新的数组。 reject: 根据函数过滤数组,把符合条件的项目剔除掉。
在filter.php中创建一个用于检查用户是否为管理员的过滤器: Route::filter('auth_admin', function() { if (Auth::guest()) return Redirect::guest('login'); if (Auth::user()->admin != TRUE) return Redirect::to('restricted'); }); 创建一个我们限制给已登录用户的路由: Route::get('res...
这样我们就可以方便地利用上一些filter、map、transform、reject等等方法,既简单,又优雅 我们知道laravel的Query Builders,当在它后面最终调用->get()方法时,返回的是一个集合Collection实例。但是这里,不要将单纯的Collection和Query builder混淆起来: 在Query Builder中,在你最终调用->get()或first()这些方法前,我们实...