代码之家  ›  专栏  ›  技术社区  ›  Sigal Zahavi

关系不显示相关字段

  •  0
  • Sigal Zahavi  · 技术社区  · 6 年前

    使用Laravel 5.4

    我有两张桌子:起源和咖啡。

    他们之间的关系:

    咖啡型号:

    public function origin()
    {
       return $this->belongsTo('App\Origin');
    }
    

    在原始模型中:

     public function coffee()
    {
       return $this->hasMany('App\Coffee');
    }
    

    在我的控制器中,我有这个方法:

    $origins = Origin::with(['coffee' => function ($query) {
                $query->where('active', 1);
                $query->orderBy('name', 'asc');
            }])->orderBy('name', 'asc')->get();
    

    在我看来:

    @foreach($origins as $origin)
        {{ $origin->name }}
        <pre>{{ $origin->coffee->name }}</pre>
    @endforeach
    

    我得到这个错误:

    属性(名称)不在此集合实例上存在。

    如果I代码:

    @foreach($origins as $origin)
            {{ $origin->name }}
            <pre>{{ $origin->coffee }}</pre>
        @endforeach
    

    我买的都是原汁原味的咖啡。

    我做错什么了?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Hieu Le    6 年前

    $origin->coffee 是一个集合,而不是单个对象。你的模特也告诉我们 Origin 模型 有很多 Coffee 模型。

    列出所有 coffee s在当前 origin :

    @foreach($origins as $origin)
        {{ $origin->name }}
    
        @foreach($origin->coffee as $coffee)
        <pre>{{ $coffee->name }}</pre>
        @endforeach
    @endforeach