首页 > 解决方案 > 此集合实例上不存在 Laravel8 属性 [Eng2]

问题描述

我面临一个奇怪的问题:我有 2 个页面具有与相同数据库相关的相似结构,第一个页面显示了一个完美运行的产品网格,第二个页面是项目详细信息给了我这个错误。我可以JSON string {{$wine}}在页面上获取所有内容,但无法使用{{$wine->Eng2}}or提取元素{{$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']);

标签: laraveleloquent

解决方案


尝试使用

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

代替

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

first()将为您获取集合中的第一个元素,但get()将为您获取整个集合,因此first()如果集合有一个元素,您可以使用,或者您必须在视图中使用 foreach。


推荐阅读