我有一个表,我们就叫TableA,它与账户表有关系,我们就叫TableB。现在,TableA 是一种通知,我可以使用 TableB 的 m2m 字段跟踪谁已经阅读了它。我想要一个 API 端点,我可以将当前登录用户的 ID 传递给它并返回该用户(表 B)尚未读取的通知(表 A 的记录)。我无法找出正确的查询。
以前,我有一些看起来像这样的东西:
SELECT server_notifications.id, server_notifications.created_at,
server_notifications.updated_at, server_notifications.message,
snr.account_id, snr.server_notification_id
FROM `server_notifications`
LEFT JOIN server_notif_read_by_accounts snr
ON server_notifications.id = snr.server_notification_id
WHERE (snr.account_id IS NULL OR snr.account_id <> 'some-account-id')
AND `server_notifications`.`deleted_at` IS NULL;
但我意识到它会正确返回它应该返回的内容(哈哈,叹息),但这不是我所期望的。该查询确实返回与我传递的帐户 ID 不关联的 TableA 记录,但我想要获取的是尚未与
account_id
关联或已关联但不应包含的每个 TableA 记录与不同 account_id
关联的其他记录。