отношения между пользователем и категорией OctoberCMS

как установить связь между пользователем и категорией?

В категории несколько пользователей, и пользователь принадлежит к категории

Я добавляю category_id в пользовательскую таблицу

в интерфейсе я показываю список пользователей с плагином builder но я также хочу для отображения категории пользователя

Я использую пользовательский плагин RainLab

Помоги мне, пожалуйста,

заранее спасибо


person Lutte P. Okamango    schedule 21.04.2018    source источник


Ответы (2)


кажется, вам нужно расширить модель пользователя и добавить category время выполнения отношения

Вам необходимо добавить этот код в метод загрузки вашего плагина.

public function boot()
{
    //Extending User Plugin
    \RainLab\User\Models\User::extend(function($model) {

        $model->hasOne['category'] = 'HardikSatasiya\Plugin\Models\Category';

    });
}

этот код добавит динамическое отношение к пользовательской модели, поэтому теперь вы можете использовать это отношение напрямую, как $userModel->category->name

так что теперь в списке вы можете использовать приведенный ниже код

{% for user in records %}
    Email : {{ user.email }}
    Category : {{ user.category.name }}
{% endfor %}

если есть сомнения, прокомментируйте.

person Hardik Satasiya    schedule 23.04.2018

Это очень просто с связями OctoberCMS. Я думаю, что вы определили отношения в своей модели User, если вы не определили их сначала, как показано ниже,

    public $belongsTo = [
        'catgeory' => 'YourPluginName\YourAuthorName\Models\Category'
    ];

Вместо YourPluginName и YourAuthorName укажите своего автора и имя подключаемого модуля.

После определения отношения вы можете получить категорию пользователя с помощью $user->category

например Предположим, у вас есть первый пользователь, тогда вы можете получить категорию,

$user = User::first();
$category = $user->category;

//and now you can get the category name and all fields by $category,
//$category->title;
//$catgory->name; 

И если вы используете веточку на странице и показываете пользователей с {{ user.name}} (поле может быть другим), вам нужно просто использовать {{ user.category.name}} (поле может быть другим), и вы также можете отображать категорию.

Надеюсь, у вас появятся категории с пользователями. Если у вас возникнут трудности, прокомментируйте.

person Chirag Patel    schedule 23.04.2018
comment
привет, чираг, вы добавили код С моделью Category и снова добавили отношение категорий в ту же модель, я думаю, это должна быть User модель, также rainlab.user - отдельный плагин, поэтому вы не хотите добавлять к нему прямые модификации ... лучше расширить rainlab.user плагин, чтобы в будущем обновление плагина не вызовет никаких проблем. - person Hardik Satasiya; 23.04.2018
comment
Спасибо за предложение, это была опечатка. И я думаю, что спрашивающий уже определил отношения, и он понятия не имеет о том, как получить категорию пользователя. - person Chirag Patel; 23.04.2018
comment
@ LutteP.Okamango Я очень рад за вас :) Пожалуйста, проголосуйте и примите ответ в качестве признательности - person Chirag Patel; 23.04.2018
comment
да Хардик прав, потому что если плагин Rainlab.User получит обновление, то код, написанный на модели пользователя для отношения, будет потерян, поэтому это отношение должно быть добавлено в метод загрузки его пользовательского плагина. - person Zakir hussain; 07.05.2018