php - 将 whereIn 与 Laravel 中单独查询的值一起使用
问题描述
我的whereIn()
功能有问题。
我有两张桌子推车和物品。Carts 存储用户 ID 和项目 ID,而 items 表存储项目 ID 和项目信息。
我想要做的是在登录用户 ID 中获取购物车表中的所有项目。
现在我首先得到与活动用户匹配的项目 ID:
$IDs = Cart::select('item_id')->where('user_id', auth()->id());
然后我想选择所有带有ID的项目$IDs
$items = Item::all()->whereIn('id', function($query) {
$query->select('item_id')->from($IDs->item_id);
});
但是,当我尝试这个时,我得到了错误
类 Illuminate\Database\Query\Builder 的对象无法转换为 int。
当我$IDs
用类似的东西替换时[1234, 4321]
,它可以工作。
我该如何解决这个问题?
解决方案
$IDs = Cart::select('item_id')->where('user_id', auth()->id());
此行返回查询生成器而不是 id 集合...
无论如何,您可以获取数组中的 id 并将其直接用于 whereIn :
$IDs = Cart::where('user_id', auth()->id())->pluck('item_id')->all();
$items = Item::whereIn('id',$IDs)->get();
推荐阅读
- textures - DXGI/NvEnc YUV44 10bit 格式兼容性
- css - 如何使内联表单与按钮在同一行?
- symfony - Symfony 5 + Api Platform Desencrypt id 过滤器集合不起作用
- java - java没有指针吗?
- pandas - Pandas Groupby 多个条件 KeyError
- c++ - 包含字符串和整数数据成员的类对象的大小
- java - 使用 codePointAt(i) 或 Charseterset 问题从字符串中读取字形
- javascript - 滚动时图像背景更改
- angular - 在 Angular 10 中制作单选按钮
- android - ReferenceError:使用 Android Firefox 时未定义 SharedArrayBuffer