【问题标题】:October CMS : How to extend User class to add relationship?十月 CMS:如何扩展用户类以添加关系?
【发布时间】:2016-12-21 05:32:45
【问题描述】:

您好,我是 10 月 CMS 的新手,我刚开始使用用户类我知道我在 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);
        });
    });
}

但它不是扩展或添加方法。

请帮忙:)

【问题讨论】:

  • 是同一个表中的国家还是国家有自己的模型?
  • country 是另一个名为“Country”的模型

标签: php laravel octobercms


【解决方案1】:

我阅读了建议的方法。如果我理解正确,这个想法会改变 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 似乎可以提供最大的灵活性。 p>

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

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

顺便说一句:在学习为 OctoberCMS 构建自定义插件时,我发现这些资源非常有用:

  1. (我个人的最爱和懒人的方式)。安装“Builder”插件,然后去这里观看 [How To] 视频:

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

    视频: https://vimeo.com/154415433

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 2017-06-02
    • 2017-04-23
    • 2017-04-09
    • 2016-09-23
    • 1970-01-01
    相关资源
    最近更新 更多