此集合实例上不存在异常属性 [图像]

Posted

技术标签:

【中文标题】此集合实例上不存在异常属性 [图像]【英文标题】:Exception Property [image] does not exist on this collection instance 【发布时间】:2021-11-19 02:35:20 【问题描述】:

我正在学习使用 Laravel 制作 Instagram 克隆的教程。最后我开始做一些我自己的改变。

我正在尝试从 PostsController 获取用户的个人资料标题和图像。现在我可以成功获得个人资料标题,但我想获得相同的个人资料图像,但我无法做到。我正在使用干预图像。

这是我的 PostsController

public function index()

    $users = auth()->user()->following()->pluck('profiles.user_id');

    $posts = Post::whereIn('user_id', $users)->latest()->paginate(5);

    $newUsers = Profile::all('id', 'title', 'image')->sortDesc();

    // $newUsersImage = Image::make(public_path("storage/$newUsers->image"))->orientate()->fit(100, 100);

    dd($newUsers->image);

    return view('posts.index', compact('posts', 'newUsers'));

当我 dd newUsers 时,它会给出以下结果:

    Illuminate\Database\Eloquent\Collection #469 ▼
  #items: array:13 [▼
    12 => App\Models\Profile #1451 ▼
      #fillable: array:4 [▶]
      #connection: "mysql"
      #table: "profiles"
      #primaryKey: "id"
      #keyType: "int"
      +incrementing: true
      #with: []
      #withCount: []
      +preventsLazyLoading: false
      #perPage: 15
      +exists: true
      +wasRecentlyCreated: false
      #attributes: array:3 [▶]
      #original: array:3 [▶]
      #changes: []
      #casts: []
      #classCastCache: []
      #dates: []
      #dateFormat: null
      #appends: []
      #dispatchesEvents: []
      #observables: []
      #relations: []
      #touches: []
      +timestamps: true
      #hidden: []
      #visible: []
      #guarded: array:1 [▶]
    
    11 => App\Models\Profile #1443 ▶
    10 => App\Models\Profile #1437 ▶
    9 => App\Models\Profile #1454 ▶
    8 => App\Models\Profile #1452 ▶
    7 => App\Models\Profile #1419 ▶
    6 => App\Models\Profile #1442 ▶
    5 => App\Models\Profile #1461 ▶
    4 => App\Models\Profile #1459 ▶
    3 => App\Models\Profile #1433 ▶
    2 => App\Models\Profile #1455 ▶
    1 => App\Models\Profile #1411 ▶
    0 => App\Models\Profile #1410 ▶
  ]

但是当我 dd $newUsers->image 它说:异常属性 [image] 在这个集合实例上不存在。

但在我看来,我通过使用相同的 $newUsers->image 来获取地址。

请原谅我的语言,如果我不能更好地解释,我对 php 和 laravel 很陌生。

【问题讨论】:

那是因为 $newUsers 有多个配置文件,它是配置文件的集合。您首先需要通过foreach ($newUsers as $profile) echo $profile->image; ); 之类的操作来选择配置文件 【参考方案1】:

根据我在代码中看到的内容,我认为 $newUsers 是一个集合,而不是单个模型。意味着它是模型的集合。

集合没有图像,但集合中的每个项目都有一个。

只需对它们执行一个 foreach 循环,您将获得 Profile 对象和模型实例的图像。

foreach ($newUsers as $profile) 
  dd($profile->image);

【讨论】:

谢谢...我需要循环浏览收藏,错过了这个想法...问题已解决 很高兴为您提供帮助:)【参考方案2】:

因为$newUsers = Profile::all('id', 'title', 'image')->sortDesc();的返回是一个数组

您将其视为 Profile 的单个实例。

试试 dd($newUsers[0]->image)

假设模型有一个应该可以工作的图像列

【讨论】:

感谢问题已解决,我需要遍历集合。

以上是关于此集合实例上不存在异常属性 [图像]的主要内容,如果未能解决你的问题,请参考以下文章

此集合实例上不存在属性 [id] [重复]

此集合实例上不存在属性 [stock]

此集合实例上不存在属性 [task_category]

此集合实例上不存在属性 [名称] [重复]

Laravel - 此集合实例上不存在属性 [fileieres]

Laravel 8 Seeders:此集合实例上不存在属性 [id]