根据多个 ID 检索 Laravel 个模型结果
Retrieve Laravel Model results based on multiple ID's
我已将 ZendSearch
实施到我的 Laravel
应用程序中。我将它用作我的搜索引擎,用户将在其中键入搜索词,然后 ZendSearch
将 return 给我一系列按相关性排序的结果。但是,ZendSearch
return 的数组仅 return 我的记录 ID(它没有 return 任何实际记录信息)。
接下来查询我的模型以根据 ZendSearch
数组结果检索结果的正确方法是什么,这只是一个根据相关性排序的 ID 数组。
我知道 Model::find(1)
return 我的 ID 为 1 的记录,但是我如何向 find()
方法提供我想要的 ID 数组 return按照我给出的顺序编辑。
很简单。使用 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);
我在 Lumen 中使用了它。
我已将 ZendSearch
实施到我的 Laravel
应用程序中。我将它用作我的搜索引擎,用户将在其中键入搜索词,然后 ZendSearch
将 return 给我一系列按相关性排序的结果。但是,ZendSearch
return 的数组仅 return 我的记录 ID(它没有 return 任何实际记录信息)。
接下来查询我的模型以根据 ZendSearch
数组结果检索结果的正确方法是什么,这只是一个根据相关性排序的 ID 数组。
我知道 Model::find(1)
return 我的 ID 为 1 的记录,但是我如何向 find()
方法提供我想要的 ID 数组 return按照我给出的顺序编辑。
很简单。使用 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);
我在 Lumen 中使用了它。