Могу ли я упростить этот код без foreach?
$userQuestIds = [2,4,45,586,16,2,143,234,654,78,56];
$typeQuests = [];
foreach ($userQuestIds as $qId) {
$typeQuests[] = Quest::where(['id' => $qId])->first();
}
Вы можете использовать гдеВ:
$typeQuests = Quest::whereIn('id', $userQuestIds)->get();
ПРИМЕЧАНИЕ. Этот подход лучше подходит для столбцов, отличных от id
(как основного). Я думаю, что решение @andriy-Lozynskiy - лучший способ.
Если id
является первичным ключом, кратчайший путь:
$typeQuests = Quest::find($userQuestIds);
Вы можете использовать метод whereIn()
в классе QueryBuilder
$userQuestIds = [2,4,45,586,16,2,143,234,654,78,56];
$typeQuests = Quest::whereIn('id', $userQuestIds)->get();
Это самый простой и лучший способ.