Как сделать поле отношения, которое показывает список пользователей с дополнительными полями - PullRequest
1 голос
/ 25 мая 2019

Плагин, который я создал, имеет две таблицы с этими структурами:

CREATE TABLE notifications (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `created_at` TIMESTAMP NULL DEFAULT NULL,
    `updated_at` TIMESTAMP NULL DEFAULT NULL,
    `sent_at` DATETIME NULL DEFAULT NULL,
    `title` VARCHAR(191) NOT NULL COLLATE 'utf8mb4_unicode_ci',
    `message` TEXT NOT NULL COLLATE 'utf8mb4_unicode_ci',
    `photo` VARCHAR(191) NOT NULL COLLATE 'utf8mb4_unicode_ci',
    `icon` VARCHAR(191) NOT NULL COLLATE 'utf8mb4_unicode_ci'
)

CREATE TABLE notification_recipients(
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `created_at` TIMESTAMP NULL DEFAULT NULL,
    `updated_at` TIMESTAMP NULL DEFAULT NULL,
    `notification_id` INT(11) NOT NULL,
    `user_id` INT(11) NOT NULL,
    `seen` TINYINT(1) NOT NULL,
    `archived` TINYINT(1) NOT NULL
)

Я не могу понять, как создать отношение, чтобы показать поле выбора бэкэнда, где я могу выбирать пользователей, чтобы получитьуведомление, что должно быть сделано в модели.

Позже я обработаю форму в контроллере, чтобы создать строку notification_recipients для каждого выбранного пользователя.

После чтения и просмотраИз руководства по отношениям я понял, что мне может понадобиться сводная таблица.

Но мне нужна таблица notification_recipients, чтобы позже обработать уведомление для отображения пользовательских запросов во внешнем интерфейсе (seen и archived поля будут определять видимость во внешнем интерфейсе).

Как я могу это сделать?Я не понимаю отношения, которые пытаюсь построить, у меня есть третий стол?

Спасибо, с наилучшими пожеланиями.

Обновление (решение найдено):

Я добавил список флажков с именем «users».Согласно документам OctoberCMS, вы можете добавить опции из модели в поле Радио, и списки флажков работают точно так же.

На данный момент я получил это, выполнив это в модели, используемой для формы.:

use RainLab\User\Models\User;
...
public function getUsersOptions($value, $formData)
{
    $users = User::all();
    $mapped = $users->mapWithKeys(function ($item) {
        return [$item['id'] => $item['name']];
    });
    return $mapped;
}

Это отлично работает, и я получаю всех пользователей с их идентификаторами.

...