OctoberCMS / 匿名全球范围
OctoberCMS / Anonymous Global Scope
我正在使用 OctoberCMS Rainlab.User 插件来管理身份验证。
我有各种型号,属于用户。
我如何在每个模型上设置匿名全局范围以仅 return 属于经过身份验证的用户的记录?
非常感谢您的帮助。
use Auth;
protected static function booted()
{
$user = Auth::getUser();
static::addGlobalScope('user_id', function (Builder $builder){
$builder->where('user_id', $user);
});
}
我会在模型的定义页面中创建一个动态范围。您可以阅读更多相关信息 here。
class PluginModel extends Model
{
/**
* Scope a query to only records with user.
*/
public function scopeGetUserRecords($query, $userId)
{
return $query->where('user_id', $userId);
}
}
现在,任何时候调用 PluginModel class 都可以这样做:
$userRecords = PluginModel::getUserRecords($user->id)->get();
这与您已经尝试过的直线 laravel 非常相似。您只需将其添加到模型的引导功能而不是引导。
protected static function boot()
{
parent::boot();
$user = Auth::getUser();
static::addGlobalScope('user', function ($query) use ($user) {
$query->where('user_id', $user->id);
});
}
我正在使用 OctoberCMS Rainlab.User 插件来管理身份验证。
我有各种型号,属于用户。
我如何在每个模型上设置匿名全局范围以仅 return 属于经过身份验证的用户的记录?
非常感谢您的帮助。
use Auth;
protected static function booted()
{
$user = Auth::getUser();
static::addGlobalScope('user_id', function (Builder $builder){
$builder->where('user_id', $user);
});
}
我会在模型的定义页面中创建一个动态范围。您可以阅读更多相关信息 here。
class PluginModel extends Model
{
/**
* Scope a query to only records with user.
*/
public function scopeGetUserRecords($query, $userId)
{
return $query->where('user_id', $userId);
}
}
现在,任何时候调用 PluginModel class 都可以这样做:
$userRecords = PluginModel::getUserRecords($user->id)->get();
这与您已经尝试过的直线 laravel 非常相似。您只需将其添加到模型的引导功能而不是引导。
protected static function boot()
{
parent::boot();
$user = Auth::getUser();
static::addGlobalScope('user', function ($query) use ($user) {
$query->where('user_id', $user->id);
});
}