让我先设置一下情况。
我有一个带有 X 字段的“用户”表,除了“可见性”之外,这些字段对我的问题并不重要。Visibility 是一个 tinyint,值的含义如下(0 = 对所有人可见,1 = 仅对朋友可见,2 = 不可见)。
我也有一张朋友桌(id, user_id, target_user_id)
。user_id
是朋友target_user_id
。到目前为止足够简单吧?
这是它变得粘稠的地方。我正在编写一个 PHP API,我的类方法看起来像这样:
public function getUsers($requester, $page, $num) {}
- 这
$requester
是请求用户的人的用户 ID - 是
$page
分页页码 - 这
$num
是每页的项目数
我想在 SQL 中做的是$num
从 users 表中获取用户,如果他们的可见性字段为 = 0 或 1。但是,如果可见性标志为 1,我需要确保用户 id 和 $requester 是朋友表中的朋友并且只有当他们是朋友时才返回该用户。
我想在我得到结果后使用 PHP 过滤可见性,但是如果我要求 5 条记录并且一个或多个用户的可见性设置为 1 并且不是请求者的朋友,那么分页(限制)将会被搞砸. 这几乎必须完全通过 sql 完成。
可能的??