Плагин, который я создал, имеет две таблицы с этими структурами:
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;
}
Это отлично работает, и я получаю всех пользователей с их идентификаторами.