我有一个交叉引用表owner_meeting_crossref,其中包含所有者ID的列(owner_id)和列所有者有权访问的会议ID的列(meeting_id)。
我的php脚本被发送了一系列会议,我知道当前的用户ID是$ current_user_id。如何有效地检查用户(所有者)是否有权访问发送的会议ID?
答案 0 :(得分:0)
一种选择是从用户有权访问的列表中获取会议,然后计算差异。
$meetingStr = implode(',', array_map('intval', $meetings));
$accessibleMeetingQuery = $db->prepare("
SELECT meeting_id
FROM owner_meeting_crossref
WHERE owner_id=:uid AND meeting_id IN ($meetingStr)
");
$accessibleMeetingQuery->execute(array(':uid' => $current_user_id));
$accessibleMeetings= $accessibleMeetingQuery->fetchAll(PDO::FETCH_COLUMN);
$inaccessibleMeetings = array_diff($meetings, $accessibleMeetings);
另一种方法是从SQL
中完成所有操作SELECT m.id
FROM meetings AS m
LEFT JOIN owner_meeting_crossref AS om
ON m.id=om.meeting_id AND om.owner_id=:uid
WHERE m.id IN ($meetingStr)
AND om.meeting_id IS NULL