十月CMS:如何扩展User类添加关系?

时间:2016-12-21 05:32:45

标签: php laravel octobercms

你好,我是十月CMS的新手,我刚开始使用User class我知道我在laravel创建关系非常容易。

我扩展了用户权限。

    User::hasCountry()->get();

    public hasCountry($query){
        return $query->where('country',1);
    } 

所以我创建了这个关系,但我不知道如何添加到扩展用户类。

我找到了一个解决方案

public function boot()
{
    User::extend(function($model) {
        $model->addDynamicMethod('hasCountry', function($query) {
            return $query->where('country', 1);
        });
    });
}

但它没有扩展或添加方法。

请帮助:)

1 个答案:

答案 0 :(得分:0)

我阅读了建议的方法。如果我理解正确,这个想法会改变OctoberCMS安装的代码库,这是不正确的,并且当新的10月更新推送到您的应用程序时可能会造成严重破坏。

为什么不使用 backend_user 表创建新模型,然后添加所需的所有关系?

示例:

use Model;

/**
 * Model
 */
class EnhancedUser extends Model
{
   /**
   * @var string The database table used by the model.
   */
  public $table = 'backend_users';       

  public $hasOne = [
        'Country' => 'Acme\Blog\Models\Country' //path of your country model
    ];
 }

我认为使用OctoberCMS向您的应用添加功能的正确方法是 创建自定义插件 ,以及似乎提供最灵活性的IMO。

如果您需要让当前用户基于您的EnhancedUser模型的实例,请使用以下命令:

BackendAuth::getUser(); //Returns the authenticated user

BTW:在学习为OctoberCMS构建自定义插件时,我发现这些资源很棒:

  1. (我的个人收藏和The Lazy Man's Way)。安装“Builder”插件,然后转到此处观看[如何]视频:

    <强> 插件: http://octobercms.com/plugin/rainlab-builder

    <强> 视频: https://vimeo.com/154415433

  2. 文档 http://octobercms.com/docs/plugin/registration