Я работаю над небольшим приложением, использующим Laravel 5.8 для приюта для собак.
У меня есть запрос в моей модели Dog, который находит интересующие меня породы собак:
public function getBreeds()
{
return $collection = DB::table('dogs')->whereIn('name', ['Breed1', 'Breed2', 'Breed3', 'Breed4'])->get();
}
Я получаю коллекцию из примерно 100 предметов, которые выглядят так:
Collection {#373 ▼
#items: array:100 [▼
0 => {#380 ▼
+"id": 1792
+"join_date": "2019-03-21 07:40"
+"name": "Breed1"
+"age": 9.3
}
1 => {#382 ▼
+"id": 1801
+"join_date": "2019-03-21 09:35"
+"name": "Breed2"
+"age": 29.1
}
2 => {#372 ▼
+"id": 1803
+"join_date": "2019-03-21 14:10"
+"name": "Breed3"
+"age": 60.9
}
3 => {#385 ▼
+"id": 1805
+"join_date": "2019-03-21 14:12"
+"name": "Breed4"
+"age": 0.7
}
4 => {#386 ▼
+"id": 1806
+"join_date": "2019-03-21 14:14"
+"name": "Breed1"
+"age": 75.4
}
5 => {#387 ▼
+"id": 2872
+"join_date": "2019-03-21 16:07"
+"name": "Breed2"
+"age": 9.5
}
6 => {+"name": "Breed3"}
7 => {+"name": "Breed4"}
8 => {+"name": "Breed1"}
9 => {+"name": "Breed2"}
10 => {+"name": "Breed3"}
100 => {}
]
}
Мне нужно получить два коллекционных предмета для каждой породы , где возраст самый низкий и самый высокий. Это должно привести к сбору восьми предметов с 4 разными породами (по запросу) с самой молодой и самой старой собакой из каждой породы.
Я пытался использовать filter()
или each()
в сочетании с min()
и max()
, но я не могу получить желаемый результат.