【问题标题】:Property [path] does not exist on this collection instance此集合实例上不存在属性 [路径]
【发布时间】:2021-07-27 14:57:55
【问题描述】:

我想在我的 Blade 上显示上传的用户图片,所以我添加了这个:

@foreach($users as $user)
    @if($user->photo_id)
       <td class="center">
          <img src="{{ $user->photos->path }}" width="80">
       </td>
    @else
       <td class="center">
    
       </td>
    @endif
@endforeach

但它返回此错误:

异常此集合实例上不存在属性 [路径]。

我已经将这些关系添加到模型中:

Photo.php:

public function user()
    {
        return $this->belongsTo(User::class);
    }

User.php:

public function photos()
    {
        return $this->hasMany(Photo::class);
    }

那么这里出了什么问题?我该如何解决这个问题?

当我说:{{ dd($user-&gt;photos) }} 时,它会返回:

Illuminate\Database\Eloquent\Collection {#1231 ▼
  #items: []
}

这里还有表photos

【问题讨论】:

    标签: php laravel laravel-8


    【解决方案1】:

    在您的用户模型中,您定义了一对多关系。所以 laravel 会返回一个集合数组。

    如果你的路径不在数组中,我建议你将关系更改为一对一。

    User.php

    public function photos()
    {
        return $this->hasOne(Photo::class);
    }
    

    【讨论】:

      【解决方案2】:

      据我了解,您相反地定义了一对多关系。 您正在为一个用户获取多张照片。因此,获取照片集合而不是照片实例是正常的。

      在结果中,您的照片集没有 path 属性,可能您可以通过获取第一个实例 $user-&gt;photos-&gt;first()-&gt;path 来处理此错误,但您需要为您的模型有一个明确的定义关系。

      【讨论】:

        猜你喜欢
        • 2020-11-12
        • 2019-03-23
        • 2020-07-11
        • 2017-05-12
        • 2018-10-12
        • 2021-02-08
        • 2021-12-16
        相关资源
        最近更新 更多