Попытка получить «цену» собственности не-объекта

#php #laravel #eloquent #laravel-5.8

Вопрос:

Я работаю с Laravel 5.8 над разработкой своего проекта, и в этом проекте я хочу проверить, превышает ли цена корзины пользователя пользовательский номер (который также следует получить из базы данных), а затем распечатать Your delivery is free .

Поэтому, чтобы сделать это, я добавил это:

 @foreach(AppShopProductDelivery::find(1) as $delivery)
    @if($cartPrice >= $delivery->price)
        <i>
        You delivery is free
        </i>
    @endif
@endforeach
 

Но это показывает мне эту ошибку:

Попытка получить «цену» собственности не-объекта

Ссылаясь на эту строку:

 <?php if($cartPrice >= $delivery->price): ?>
 

Однако цена уже существует в БД:

введите описание изображения здесь

Так что же здесь происходит не так ? Как я могу исправить эту проблему ?

Ответ №1:

AppShopProductDelivery::find(1) просто верните одну запись, поэтому использование foreach в этом случае приведет к вашей проблеме. Чтобы решить эту проблему, вы можете изменить свой код на:

 @php
  $delivery = AppShopProductDelivery::find(1)
@endphp
@if($delivery amp;amp; $cartPrice >= $delivery->price)
    <i>
    You delivery is free
    </i>
@endif
 

Или если вы все еще хотите использовать foreach, хотя в этом нет необходимости:

 @foreach(AppShopProductDelivery::where('id', 1)->get() as $delivery)
  @if($cartPrice >= $delivery->price)
    <i>
    You delivery is free
    </i>
  @endif
@endforeach