Свойство Laravel8 [Eng2] не существует в этом экземпляре коллекции

#laravel #eloquent

Вопрос:

Я столкнулся со странной проблемой: у меня есть 2 страницы с аналогичной структурой, относящиеся к одной и той же базе данных, на первой из которых отображается сетка продуктов, работающих идеально, а вторая деталь товара выдает мне эту ошибку. Я могу получить все JSON string {{$wine}} на странице, но не могу извлечь элементы с {{$wine->Eng2}} помощью или {{$wine['Eng2']}}

 @extends('layouts.layout')
 
 @include('partials.sidebar')

<div class="detail-container">
    <img src="/img/9122705276958.png" alt="" />
    <ul>
        <!--<li>{{$wine}}</li>-->
        <li>{{$wine->Eng2}}</li>
      
        <li></li>
    </ul>
    <!--<div class="addCart">
            <i class="fas fa-shopping-cart"></i>
        </div>

        <ul class="side-icons">
            <span><i class="fas fa-search"></i></span>
            <span><i class="far fa-heart"></i></span>
            <span><i class="fas fa-sliders-h"></i></span>
        </ul>
    </div>
    <div class="bottom">
        <ul>
            <li></li>
            <li></li>
        </ul>
        <ul class="price">
            <li>Retail price: Ntd  </li>
            <li>Member price: Ntd  </li>
            <li>VIP price down to: Ntd  </li>
        </ul>
    </div>  -->
</div>
 
   public function detail($id) {
    $wine =Wine::where('ART','=',$id)->get(); 
   
    return view('detail', [
        'wine' => $wine
    ]);
        
}


Route::get('wines', [WineController::class,'index']);    

Route::get('/wines/{id}',[WineController::class,'query']);

Route::get('detail/{id}', [WineController::class,'detail']);
 

Комментарии:

1. Большое спасибо. Это работает идеально. Так много нужно узнать …

Ответ №1:

Попробуйте использовать

 $wine = Wine::where('ART','=',$id)->first();
 

вместо

 $wine = Wine::where('ART','=',$id)->get();
 

first() это даст вам первый элемент в коллекции, но get() даст вам всю коллекцию, так что вы можете использовать first() , если в коллекции есть один элемент, или вам нужно использовать foreach в представлении.