属性 [image] 在此集合实例上不存在。 / Laravel - with() 方法

Property [image] does not exist on this collection instance. / Laravel - with() Method

我从 c​​ontroller 获取数据,但不能在 blade 中使用

控制器..

$employees = Post::where('user_id', $user_id)->with('people')->get();

Blade,我在 foreach 中使用,比如 ..

$employee->people->image

但是报错

Property [image] does not exist on this collection instance.

当我 dd($employees)

请检查您的post模型是否定义了关系函数?

public function people() {
        return $this->hasMany(people::class); // Add localID and foreign_key ID as param if requires
 }

还要检查图像 属性 是否存在

请检查 希望对您有所帮助

问题是变量 $employee(顺便说一下,它包含模型 Post) 与我认为

的人有关系1:N

意味着您必须循环关系返回的人员集合

例如

@foreach($employees as $employee)
   @foreach($employee->people as $person)
      {{ $person->image }}
   @endforeach
@endforeach

你必须 foreach people relationship,你正在为那个 post 收集人,所以你必须 foreach 它,因为 relationship return array with all people per post.

@foreach($employees as $employee)
   @foreach($employee->people as $user)
      {{ $user->image }}
   @endforeach
@endforeach

如果你只想要一个你可以使用的人

$employee->people->first()->image

你应该使用这种方式

@if( $employee->people->first()->image)
    {{ $employee->people->first()->image }}
@endif

这样的话,每个post都有很多人。因此,您需要指定要从哪些人那里获取信息。 例如,这段代码可以工作:

$employee->people->first()->image

因为你是从第一批人那里得到的图像。但是我不推荐这个代码,因为你得到了 post 的所有人并且只使用其中一个并且它没有优化。

但是如果你想向所有人展示使用这个:

@foreach($employees as $employee) 
    @foreach($employee->people as $person)
        {{ $person->image }}
    @endforeach
@endforeach