Приветствую! Есть задача над которой уже несколько дней бьюсь. Новичок в чужом коде разбирается...
Есть объект коллекции, содержащий массив объектов филиалов магазина. Нужно получить коллекцию объектов филиалов, у которых ID совпадает с ID из массива для сравнения.
Коллекция:
object(Illuminate\Support\Collection)#2149 (1) {
["items":protected]=>
array(6) {
[0]=>
object(\Sale\Model\Store\Row)#2147 (4) {
["data":protected]=>
array(18) {
["ID"]=>
string(2) "96"
["ACTIVE"]=>
string(1) "Y"
["ISSUING_CENTER"]=>
string(1) "Y"
}
[1]=>
object(\Sale\Model\Store\Row)#2148 (4) {
["data":protected]=>
array(18) {
["ID"]=>
string(3) "100"
["ACTIVE"]=>
string(1) "Y"
["ISSUING_CENTER"]=>
string(1) "Y"
}
[2]=>
object(\Sale\Model\Store\Row)#2146 (4) {
["data":protected]=>
array(18) {
["ID"]=>
string(3) "124"
["ACTIVE"]=>
string(1) "Y"
["ISSUING_CENTER"]=>
string(1) "Y"
}
Массив для сравнения $arPickupID:
array(2) {
[0]=> "96"
[1]=> "100"
}
Мой код, который возвращает коллекцию только с первым совпадением
$shops - исходная коллекция
getStoreId() - метод объекта магазина, возвращающий ID
$filtered = $shops->filter(function($value) use($arPickupID) {
foreach ( $arPickupID as $item ) {
if ( $item == $value->getStoreId() ) {
return $value;
}
}
});
вот сам метод filter():
public function filter(callable $callback = null)
{
if ($callback) {
return new static(Arr::where($this->items, $callback));
}
return new static(array_filter($this->items));
}
Есть идеи, товарищи?