ChatGPT解决这个技术问题 Extra ChatGPT

基于多个 ID 检索 Laravel 模型结果

我已经在我的 Laravel 应用程序中实现了 ZendSearch。我将它用作我的搜索引擎,用户将在其中键入搜索词,然后 ZendSearch 将返回一个按相关性排序的结果数组。但是,ZendSearch 返回的数组只返回我的记录 ID(它不返回任何实际记录信息)。

接下来是查询我的模型以根据 ZendSearch 数组结果检索结果的正确方法,这只是一个基于相关性排序的 ID 数组。

我知道 Model::find(1) 会返回我的 ID 为 1 的记录,但是我如何为该 find() 方法提供一个 ID 数组,我希望按照我给它的顺序返回这些 ID。

关心评论为什么反对?
另一个反对票?为什么? :) laravel 文档甚至没有提及 findMany() 或将数组传递给 find 函数的能力。这怎么不是一个合理的问题? :)
投票给你,这个问题确实帮助了我。 :) 我也没有在文档中看到 findMany,它在 API document 中。
@PeterLiang 链接断开,我在 8 上找不到

l
lukasgeiter

这很简单。使用 findMany

$models = Model::findMany([1, 2, 3]);

顺便说一句,您还可以将数组传递给 find(),它会在内部调用 findMany

$models = Model::find([1, 2, 3]);

在引擎盖下它只是做一个 whereIn 所以你也可以这样做:

$models = Model::whereIn('id', [1, 2, 3])->get();

H
Hadie Danker

只需使用 ->find($ids)

$ids = [1,2,3,4]
$model = Model::find($ids);

就我而言,我像这样使用 query

$ids = [1,2,3,4]
$model = Model::query()->find($ids);

我在 Lumen 中使用了它。