【问题标题】:Laravel identify collection instance keyLaravel 识别集合实例键
【发布时间】:2023-03-20 06:55:02
【问题描述】:

我已经设置了一对多关系,我想检索许多结果并将它们显示到我的刀片模板上。我目前收到以下错误Property [job_title] does not exist on this collection instance.

我认为这是因为我试图获得许多结果,尽管只有一个结果是一个集合。我的问题是我怎么知道循环回显我的数据的关键是什么,例如 @foreach ($WhatHere? as something)

这是我的代码 -

关系

//Client model
public function contact() {
   return $this->hasMany(Contact::class, 'client_id', 'id');
}

//Contct model
public function client() {
    return $this->hasOne(Client::class, 'id', 'client_id');
}

控制器查询

public function show(Client $client, $id)
{
    $client = Client::where('id', $id)->firstOrFail();

    return view('clients.single', compact('client'));
}

刀片

{{$client->contact->job_title}}

【问题讨论】:

  • 你可以用Client::findOrFail($id)代替你所拥有的,做同样的事情但更短
  • 请注意:您可以将您的“联系”方法复数为contacts(),这样就可以反映出它们不止一个

标签: php laravel laravel-5 laravel-blade


【解决方案1】:

由于是一对多的关系,所以需要遍历联系人:

@foreach ($client->contact as $contact)
    {{ $contact->job_title}}
@endforeach

或者你可以只显示第一个联系人:

{{ $client->contact->first()->job_title }}

【讨论】:

  • 啊完美。太有意义了!我使用 $client 作为访问者访问 foreach 中的联系人。完美的谢谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 2021-11-22
  • 2017-03-26
  • 2020-07-11
  • 2019-07-10
  • 2015-08-23
相关资源
最近更新 更多