Laravel 中间件 return 数据 user_id
Laravel middleware return data for user_id
是否可以在 laravel 5.2x 中为控制器中的 return 数据创建一个中间件,仅用于特定的 user_id 而不是在任何地方输入诸如
之类的东西
->where('access_gallery','=',true)
例如,我的网页上有一个画廊,用户可以在其中上传照片、裁剪等。
我通过中间件检查它们的 payment_datetime < 当前数据时间,如果为真则下一步。
下一步我想 return/edit/delete/crop/...,只有特定用户的照片,通常情况下我必须使用 @up 代码创建一个查询,因为我们不想要 user_1 编辑 user_2 页。
将它复制到任何地方有点烦人,而且如果我创建一个管理员帐户来访问所有内容,我必须为每个函数创建下一个查询以 return 它们的所有数据。
如果不能在中间件中创建这样的功能,那么在控制器中可以吗?
我认为您正在寻找的是范围 - 甚至是全球范围。
https://laravel.com/docs/5.2/eloquent#global-scopes
在App
下创建一个Scopes
目录。像这样创建一个文件:
<?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
class UserGallery implements Scope
{
/**
* Query if user has gallery
*
* @return void
*/
public function apply(Builder $builder, Model $model)
{
return $builder->where('access_gallery','=',true);
}
}
然后在您的模型中(您也希望应用此范围),将 boot
函数添加到模型的开头 class:
use App\Scopes\UserGallery;
/**
* The "booting" method of the model.
*
* @return void
*/
protected static function boot()
{
parent::boot();
static::addGlobalScope(new UserGallery);
}
您甚至可以将示波器放在 trait
class 中...在我看来,这看起来会更干净并且更容易注入您的模型。
PS:限制放入中间件的逻辑量class。将中间件视为进入主要逻辑集的一扇门。该门已打开或已锁定以供用户访问。
是否可以在 laravel 5.2x 中为控制器中的 return 数据创建一个中间件,仅用于特定的 user_id 而不是在任何地方输入诸如
之类的东西->where('access_gallery','=',true)
例如,我的网页上有一个画廊,用户可以在其中上传照片、裁剪等。
我通过中间件检查它们的 payment_datetime < 当前数据时间,如果为真则下一步。
下一步我想 return/edit/delete/crop/...,只有特定用户的照片,通常情况下我必须使用 @up 代码创建一个查询,因为我们不想要 user_1 编辑 user_2 页。
将它复制到任何地方有点烦人,而且如果我创建一个管理员帐户来访问所有内容,我必须为每个函数创建下一个查询以 return 它们的所有数据。
如果不能在中间件中创建这样的功能,那么在控制器中可以吗?
我认为您正在寻找的是范围 - 甚至是全球范围。 https://laravel.com/docs/5.2/eloquent#global-scopes
在App
下创建一个Scopes
目录。像这样创建一个文件:
<?php
namespace App\Scopes;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
class UserGallery implements Scope
{
/**
* Query if user has gallery
*
* @return void
*/
public function apply(Builder $builder, Model $model)
{
return $builder->where('access_gallery','=',true);
}
}
然后在您的模型中(您也希望应用此范围),将 boot
函数添加到模型的开头 class:
use App\Scopes\UserGallery;
/**
* The "booting" method of the model.
*
* @return void
*/
protected static function boot()
{
parent::boot();
static::addGlobalScope(new UserGallery);
}
您甚至可以将示波器放在 trait
class 中...在我看来,这看起来会更干净并且更容易注入您的模型。
PS:限制放入中间件的逻辑量class。将中间件视为进入主要逻辑集的一扇门。该门已打开或已锁定以供用户访问。