1

我在进行研究以找到解决此问题的明确解决方案时提出了这个问题,但是许多可用的答案只是如何使用 Laravel Scheduler 本身!

所以我正在用 Laravel 创建一个简单的网站,让用户自己创建提醒。
用户可以在他们的电子邮件上收到提醒,或者如果他们已登录,他们会收到类似于 Facebook 通知的通知提醒。
我不确定我是否走在正确的道路上,但我正在使用 Laravel Scheduler 向每个特定用户发送提醒。
我还使用 Laravel 中的事件每 1 分钟向用户推送最近的更改,但我的问题是,所有用户都会收到相同的通知。例如,如果我想提醒X 先生约会,Y 女士也收到相同的确切通知!!!

在这一点上,我有两个问题:
1 - 使用 Laravel Scheduler 是否适合这个项目?如果不是,那么推荐什么技术或方法?
2 - 如果我必须为此项目使用 Laravel 调度程序,那么如何向相关用户发送通知?(我不能使用用户 ID,因为 Laravel 调度程序是由服务器本身而不是用户运行的!)
我还附上了我的代码来向你展示我到目前为止所拥有的,我知道我在 Laravel Channels Broadcast 中使用的方法在某种程度上是错误的,但我刚试过!
如果有人知道答案,请帮助我。谢谢
Laravel 调度器 - 命令 - 处理函数

public function handle()
    {
        $reminders = Note::whereTime('task_date', '<=', Carbon::now()->addMinutes(30))
        ->WhereTime('task_date', '>', Carbon::now()->subMinutes(30))->get();

        foreach ($reminders as $reminder) {
            if (!$reminder->notified) {
                Note::find($reminder->id)
                ->update(['notified' => 1]);
                event(new RemindUsers($reminder));
                dd($reminder->title);
            }
        }
    }

Laravel 事件

public $reminder;
    
public function __construct($reminder)
    {
        $this->reminder = $reminder;
    }
    
    public function broadcastOn()
    {
        return new PrivateChannel('remind.'.$this->reminder->user_id);
    }

    public function broadcastWith () {
        return [
            'reminders' => $this->reminder
        ];
    }

Laravel 频道

Broadcast::channel('remind.{id}', function ($user, $id) {
    $notes = Note::where('user_id', $id)->get();
    foreach ($notes as $note) {
        return $user->id === $note->user_id;
    }
});

Vue JS 代码 - Echo 方法

data () {
      return {
        user: 1
      }
    },
CatchReminders () {
        Echo.private(`remind.${this.user}`)
          .listen('RemindUsers', (response) => {
            this.$toast.info(`${response.reminders.title}`)
          })
      }
4

0 回答 0