首页 > 解决方案 > 将 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],它可以工作。

我该如何解决这个问题?

标签: phpmysqllaravel

解决方案


$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();

推荐阅读