Laravel 5.3WhereIn 返回唯一结果

标签 laravel

我在 whereIn 上遇到问题。我的代码如下所示

 $arrayKeys = [1, 2, 1, 4, 5, 1];
    $products = \App\Product::whereIn('id', $arrayKeys)
                    ->select(['id', 'name', 'outright_price', 'discount', ])
                    ->with('photo', 'colors')
                    ->get();

它只返回唯一的id 1, 2, 4, 5。我需要返回1, 2, 1, 4, 5, 1。该怎么做?我不知道。

最佳答案

这是正常的,因为只有一行ID = 1。如果由于某种原因您仍然想获取具有 [1, 2, 1, 4, 5, 1] ID 结构的集合,则需要使用 collect()< 手动构建它merge():

$arrayKeys = [1, 2, 1, 4, 5, 1];

$products = collect([]);

$productData = \App\Product::whereIn('id', $arrayKeys)
        ->select(['id', 'name', 'outright_price', 'discount'])
        ->with('photo', 'colors')
        ->get();

foreach ($arrayKeys as $key) {
    $products = $products->merge($productData->where('id', $key));
}

dd($products);

我已经测试过它并且有效。

关于Laravel 5.3WhereIn 返回唯一结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40458146/

相关文章:

php - Laravel 5.6 向用户注册角色

php - 我应该如何在 Laravel 中为新类别创建第三个表

php - Laravel Facebook-登录/丢失电子邮件

php - 您可以将图像存储在存档系统的文件夹中

php - 如何修复 stripe-php 没有这样的 payment_method 错误

php - 如果可选参数不在列表中,Laravel 处理默认路由

javascript - Laravel:如何通过 jQuery 检查用户是否登录

css - 是否有将 Google 字体添加到 Laravel 元素的最佳实践?

php - 在 Laravel 5.1 中使用 "Neoxygen/Neoclient"作为 ServiceProvider+Facade

php - 我是 ubuntu 的新手。我已经安装了 phpstorm 并尝试运行 composer 但它没有运行