Laravel 6 коллекций - извлечение одного значения из записи - PullRequest
1 голос
/ 12 марта 2020

У меня есть следующая коллекция:

 $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');  

Есть идеи, как исправить?

...