Laravel授权Eloquent收集

Sar*_*nan 5 laravel-5.1

如何将laravel Gate(http://laravel.com/docs/5.1/authorization)用于雄辩的收藏.

它适用于单个项目,如下所示

$post = Post::findOrFail($id);

if ($user->cannot('view-post', $post)) {
   abort(403);
}
Run Code Online (Sandbox Code Playgroud)

但不适合收藏.是否可以使用Gate过滤集合并返回集合?

$posts = Post::all();
Run Code Online (Sandbox Code Playgroud)

小智 1

我也有同样的问题。也许有些是这样的:

$post->filter(function($value,$key){
  if(\Gate::allows('view-post',$value)){
    return $val;
  }
});
Run Code Online (Sandbox Code Playgroud)

但必须有更好的解决方案。

相关链接:
https://laravel.com/docs/5.2/collections#method-filter
https://laravel.com/docs/5.2/authorization