如何从Laravel 5.2中的集合中获取相关模型?

时间:2017-01-16 05:26:38

标签: php mysql arrays laravel laravel-5.2

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

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

image of jobData

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

  

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

如何获得$jobData->job_title值?

5 个答案:

答案 0 :(得分:2)

您应该使用Laravel中的each method来迭代集合:

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

答案 1 :(得分:1)

您必须遍历$jobData,因为它将返回所有行。类似的东西:

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

$jobDatacollection,因此您无法像job_title一样直接访问$jobData->job_title。我想你想在你的视图文件中访问它们。因此请遵循

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

答案 4 :(得分: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"));
}