【问题标题】:How do I get related model from collection in Laravel 5.2?如何从 Laravel 5.2 中的集合中获取相关模型?
【发布时间】:2017-05-30 21:54:00
【问题描述】:

我有一个返回所有职位发布数据的方法。这是我尝试过的:

public function show($id)
{
    $applicantData = Applicant::whereId($id)->first();
    $jobData = Job::all();
    //dd($jobData);
    //dd($jobData->job_title);
    return view('applicant.confirmation',compact("applicantData","jobData"));
}

dd($jobData);returns:

dd($jobData->job_title); 它返回一个错误:

ApplicantController.php 第 150 行中的 ErrorException:未定义 属性:Illuminate\Database\Eloquent\Collection::$job_title

如何获得$jobData->job_title 值?

【问题讨论】:

  • $jobData->first()->job_title 获取第一个职位。集合就像一个数组。它包含所有项目。
  • @CerlinBoss 它每次都首先返回job_title。如果我将job_id 更改为其他内容,但它总是首先返回job_title
  • 给我看看你的jobdata表结构
  • @msonowal 申请表prnt.sc/dw6r9k 和工作表prnt.sc/dw6rec
  • @ChoncholMahmud :阅读docs 并使用任何有意义的方法

标签: php mysql arrays laravel laravel-5.2


【解决方案1】:
public function show($id)
{
    $applicantData = Applicant::whereId($id)->first();
    $jobData = Job::find($applicantData->job_id); //this will give you the job
    dd($jobData);
    dd($jobData->job_title);
    return view('applicant.confirmation',compact("applicantData","jobData"));
}

【讨论】:

  • 这就是我要找的。谢谢接受.. :)
【解决方案2】:

你应该在 Laravel 中使用 each method 来迭代集合:

$jobData->each(function ($item, $key) {
  dd($item->job_title);
});

【讨论】:

  • 我想显示job_title,它已经在他们的数据库中了。但它返回所有job_title。我想要一个具体的。你能告诉我吗?如果我将 job_id 更改为 job_title 任何时候都会以您的方式返回“Admin Assistant”
  • @ChoncholMahmud,如果您想获取特定的Job 项目,那么您可能不应该获取所有带有Job::all() 的项目,而是使用返回单个Job 实例的适当方法。例如,您可以使用get 方法。如果您仍然需要所有作业项,但需要根据Job 属性执行一些操作,则将检查添加到循环中,如if ($item->job_id == 12345) { ... }。所以不清楚你所说的“特定的”是什么意思。
【解决方案3】:

$jobData 是一个collection,所以你不能像$jobData->job_title 那样直接访问job_title。我想你想在你的视图文件中访问它们。因此请遵循

@foreach($jobData as $job)
    {{ $job->job_title }}
@endforeach

【讨论】:

    【解决方案4】:

    它们是数组中的对象,因此您可以直接选择值。如果你需要第一项,那么$jobData[0]->job_title$jobData->first()->job_title 或者你可以循环foreach($jobData as $data){$data->job_title}

    【讨论】:

      【解决方案5】:

      您必须遍历$jobData,因为它将返回所有行。比如:

      $jobData = Job::all();
      foreach ($jobData as $job) {
          echo $job->job_title;
      }
      

      【讨论】:

        猜你喜欢
        • 2013-02-17
        • 1970-01-01
        • 2016-12-11
        • 2014-03-23
        • 2016-07-10
        • 2016-08-05
        • 2016-08-30
        • 2016-11-16
        • 2019-09-09
        相关资源
        最近更新 更多