根据多个ID检索Laravel模型结果


Retrieve Laravel Model results based on multiple ID's

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

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

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

这很简单。使用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);

我在流明中使用了它。