【问题标题】:MySQL : How to identify users I follow or follow me from other person's followers?MySQL:如何识别我关注的用户或从其他人的关注者中关注我的用户?
【发布时间】:2020-04-12 01:05:26
【问题描述】:

我正在尝试创建一个类似关注/关注系统的 twitter。桌子设计是这样的-

leader_id | following_id | is_mutual
        1 |            2 | 1 // Mutually follow each other
        2 |            1 | 1
        1 |            3 | 0 
        1 |            4 | 1
        4 |            1 | 1

假设我是user_id=4。我正在查看user_id=1 的关注者。我去看看名单-

2
3
4 -> me

我如何确定我正在关注或关注我的这些用户中的哪些。我正在为此写一个 Laravel Eloquent 声明。甚至 MySQL 查询也能帮助我找出正确的方法。

【问题讨论】:

  • 数据不一致?我希望看到 (1 | 4 | 1)。
  • 已更新。应该是 1 | 4 | 1 .
  • 到目前为止您尝试过什么?你被困在哪里了?
  • 因为基本的sql可以完成这项工作。比如 select following_id as follower from follower where leader_id = 1;
  • 我已经设置了 belongsToMany 关系。但是,当我查看其他人的关注者时,我无法找出正确的方法来找到我关注或关注我的用户。超级卡住。

标签: mysql sql laravel eloquent


【解决方案1】:

我不会那样做的。

而是有一个一对多的订阅关系表,比如

|subscriber  | subscribed_user_id 
---------------------------------
|1           | 2
|1           | 3
|2           | 3
|3           | 1

甚至是json编码的灵活列表

|subscriber  | subscribed_users
-------------------------------
|1           | {2,3}
|2           | {3}
|3           | {1}

【讨论】:

  • 是的,我有一对多的关系。然而,真正的麻烦是在其他人的追随者中找到我的追随者/用户。如果不先将其他人的追随者的整个列表提取到内存中,然后一个一个地检查它们,我想不出任何方法来编写查询或语句。当关注者列表太大(比如 100 万)时,系统会失败
  • 它只是一个反向查找 - SELECT subscriber FROM subscription_table WHERE subscribed_user_id = :my_user_id
猜你喜欢
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多