Если это для массива / коллекции, а не для Eloquent запроса, вы можете использовать метод collection keyBy
для получения уникальных значений.
https://laravel.com/docs/5.8/collections#method-keyby
$data = [
[
"Title" => "A",
"Publication date" => "2013",
],
[
"Title" => "B",
"Publication date" => "2010",
],
[
"Title" => "B",
"Publication date" => "2999",
],
[
"Title" => "B",
"Publication date" => "5555",
],
];
$collection = collect($data)->keyBy('Title');
Тогда ваш вывод будет выглядеть так:
Collection {#1389
#items: array:2 [
"A" => array:2 [
"Title" => "A"
"Publication date" => "2013"
]
"B" => array:2 [
"Title" => "B"
"Publication date" => "5555"
]
]
}
Метод keyBy
даст вам последний элемент в коллекции для каждого Заголовка, так что вы можете отсортировать коллекцию перед вызовом keyBy
, если вы хотите получить определенные элементы:
// get each Title with the highest Publication date
$collection = collect($data)->sortBy('Publication date')->keyBy('Title');
// get each Title with the lowest Publication date
$collection = collect($data)->sortByDesc('Publication date')->keyBy('Title');
Если вы хотите вернуть массив без ключей «A» и «B», то вы можете сделать это:
$collection = collect($data)->keyBy('Title')->values()->toArray();
Выход:
array:2 [
0 => array:2 [
"Title" => "A"
"Publication date" => "2013"
]
1 => array:2 [
"Title" => "B"
"Publication date" => "5555"
]
]