Laravel 7 如果 id 不存在于另一个表中,则选择一条记录

时间:2021-03-19 21:52:50

标签: sql laravel

使用 laravel 7 我试图选择一个项目记录,只要该记录 id 没有出现在另一个表中,但只要另一个表中的 id 伴随着用户 id

Item table
id
item name


Banned Items
ItemID
UserID

编辑 1 如果一个项目被禁止,它被添加到禁止项目表中,该表存储项目 ID 和用户 ID,当我加载项目时,我需要排除出现在禁止项目表中的项目,但仅限于被禁止的用户< /p>

Items table
1 Apple
2 Pear

Banned Items
1 1
1 2

Users
1 username1 password1
2 username2 password2

因此,如果该项目被该用户禁止,请不要选择该项目。我正在努力做到这一点。谢谢

1 个答案:

答案 0 :(得分:1)

我不明白你是如何在被禁物品和用户之间建立关系的,但你需要这种关系。所以我假设banned_items表上的列是

id, user_id, item_id
$bannedItems = BannedItem::where('user_id', Auth::id())->get()->pluck('id');
// If you don't have a model for pivot table:
$bannedItems = DB::table('banned_items')->where('user_id', Auth::id())->get()->pluck('id');
$items = Item::whereNotIn('id', $bannedItems)->get();

应该返回未被当前用户禁止的项目。

相关问题