根据你的问题,我预测你有这样的数据库结构:
User
user_id(PK) | ...
Role
role_id(PK) | user_id | name | ...
Manager
manager_id | user_id | ...
因此,您需要查询所有角色为“manager”但不在表管理器中的用户。
只需左键加入:
$users = User::query()
->select("user.*")
->join("Role", "user.user_id", "=", "role.user_id")
->leftJoin("Manager", "manager.user_id", "=", "user.user_id")
->whereNull("manager.manager_id")
->where("role.name", "=", "manager")
->get();
它将生成以下SQL查询:
SELECT user.*
FROM
user
INNER JOIN role ON role.user_id=user.user_id
LEFT JOIN manager ON manager.user_id=user.user_id
WHERE manager.manager_id IS NULL AND role.name='manager'