【问题标题】:Laravel push notification token: use Eloquent or Query builder?Laravel 推送通知令牌:使用 Eloquent 还是 Query builder?
【发布时间】:2018-03-12 03:06:00
【问题描述】:

我有一个表'Token',一个'User'可以有多个'Token',而一个'Token'只能属于1x'User',我可以用hasMany()&belongsTo()这个关系,但是每次用户从android&iOS注销时,都会删除令牌行记录,并且在用户登录时,会在表中添加新的令牌记录,因此会消耗和浪费递增的主键,所以我想知道我是否应该删除主键并改用 Laravel Query Builder?因为 Laravel Eloquent 没有主键就不能正常工作?

【问题讨论】:

  • 是否需要从表中删除记录?否则,您可以在注销时将 token 设置为 null 并在登录时更新,如果它尚不存在,则制作一个 token 记录。对我来说似乎更简单。
  • 如果我有多个空记录怎么办?因此,如果“用户”有 3 个不同的 android GCM 令牌并在 2x 上注销,那么我应该 NULL 2 记录吗?如果稍后同一用户再次登录,我将更新其中一个 NULL 记录,如果没有找到 NULL 记录,它会创建一个新记录?
  • 我会说你每个(令牌类型?)只有一个令牌。更新与令牌绑定的记录以及它是什么类型的令牌作为 where 条件。对于类型,您也许可以使用 ENUM,但我不确定情况有多复杂。因为我现在不确定为什么用户可以拥有多个令牌。
  • 用户可以从多个Android或iOS设备登录,不同的设备会各自生成不同的token,所以如果一个用户当前登录到2x android或ios设备,当GCM/APNS推送通知是发送,两个设备都会收到它

标签: mysql laravel push-notification eloquent laravel-query-builder


【解决方案1】:

这可能是您可以使用的解决方案之一。

使令牌表看起来像这样:


令牌表

标识 |用户 ID |设备 |令牌


在设备中,您可以存储所指设备的唯一值。

关于令牌表的一些事情:

  • 如果当前设备尚不存在新的令牌记录,则插入新的令牌记录。 (设置令牌)
  • 如果用户将唯一设备集令牌注销为空(更新)
  • 如果用户再次登录,将令牌值从 null 更新为令牌值

【讨论】:

  • 我明白了,所以如果一个用户使用 3 个 android 设备登录,然后从 2 个设备注销,2x 记录将设置为 NULL,所以下一次,当同一个用户登录时,我需要查找是否token=NULL 的记录首先存在,如果存在,我将更新,否则创建一个新记录行?
  • @yeln 是的,我想你现在明白了。您可以发送给所有登录用户的通知,其中 token != null。
  • @yeln 如果这是您的问题的解决方案,您可以接受答案吗?
猜你喜欢
  • 2017-04-23
  • 1970-01-01
  • 2016-11-12
  • 2019-08-11
  • 2015-06-15
  • 2010-11-23
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多