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

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

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

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

112747 次浏览

很简单,用 findMany:

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

顺便说一下,你也可以把一个数组传递给 find(),它会在内部调用 findMany:

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

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

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

->find($ids)

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

在我的例子中,我像这样使用 query

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

我在《陨落之光》里用过。