首页 > 解决方案 > 十月CMS / 匿名全球范围

问题描述

我正在使用 OctoberCMS Rainlab.User 插件来管理身份验证。

我有各种型号,属于用户。

如何在每个模型上设置匿名全局范围以仅返回属于经过身份验证的用户的记录?

非常感谢您的帮助。

use Auth;

protected static function booted()
    {
        $user = Auth::getUser();
        static::addGlobalScope('user_id', function (Builder $builder){
        $builder->where('user_id', $user);
      });
    }

标签: phplaraveloctobercmsoctobercms-plugins

解决方案


我会在模型的定义页面中创建一个动态范围。你可以在这里阅读更多关于它的信息。

class PluginModel extends Model
{
    /**
     * Scope a query to only records with user.
     */
    public function scopeGetUserRecords($query, $userId)
    {
        return $query->where('user_id', $userId);
    }
}

现在任何时候你调用你的 PluginModel 类你都可以这样做:

$userRecords = PluginModel::getUserRecords($user->id)->get();

推荐阅读