如何制作一个显示带有附加字段的用户列表的关系字段

时间:2019-05-25 01:51:12

标签: laravel octobercms octobercms-plugins octobercms-backend

我创建的插件有两个具有以下结构的表:

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表,以便稍后处理通知以在前端显示自定义查询(seenarchived字段将确定前端的可见性)。

我该怎么做?我不明白我要建立的关系,请问我有第三张桌子吗?

谢谢,最好的问候。

更新(找到解决方案):

我添加了一个名为“用户”的复选框列表。 根据OctoberCMS的文档,您可以将模型中的选项添加到Radio字段中,并且Checkbox Lists的工作方式相同。

现在,我通过在用于表单的模型中执行此操作来使它起作用:

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;
}

效果很好,我为所有用户提供了ID。

0 个答案:

没有答案