У меня есть следующая коллекция:
$products = $this->productRepository->getByCompanyId(1)->get();
Illuminate\Database\Eloquent\Collection {#856 ▼
#items: array:1 [▼
0 => App\OrderItemProduct {#824 ▼
#table: "product"
...
#attributes: array:3 [▼
"available" => "5"
"product_name" => "Product X"
"product_id" => 1
]
....
}
]
}
Я хочу получить значение available
для отдельной записи. Я пытаюсь выполнить следующее, которое работает, если запись существует:
$available = $products->where('product_id','=', 1)->first()['available'];
Однако выдается исключение Trying to access array offset on value of type null
, если я пытаюсь получить значение available
записи, которой нет в коллекции, например пытается получить для product_id 17:
$available = $products->where('product_id','=', 17)->first()['available'];
Это работало в laravel v6 и более ранних версиях, но, похоже, больше не работает в laravel 6.17.1
Примечание в laravel 5.5
Мне удалось использовать метод value
следующим образом, но затем он начал выдавать те же ошибки, что и в v 5.7
, как указано выше, поэтому я переключился на метод, описанный выше, но теперь, когда ни один из регистраторов не работает ни в последней версии laravel.
`available = $products->where('product_id','=', 17)->value('available');
Кроме того, когда я пытаюсь get
, почему он всегда возвращает ноль, даже если запись существует?
`available = $products->where('product_id','=', 1)->get('available');
Есть идеи, как исправить?