2017-01-16 25 views
0

我有一個方法返回所有工作崗位數據。這是我曾嘗試:如何從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);它返回一個錯誤:

ErrorException in ApplicantController.php line 150: Undefined property: Illuminate\Database\Eloquent\Collection::$job_title

我怎樣才能獲得$jobData->job_title價值?

+2

'$ jobData->第一() - > job_title'對第一份工作的標題。集合就像一個數組。它包含所有的項目。 –

+0

@CerlinBoss它每次都返回'job_title'。如果我把'job_id'改成別的東西,但總是先kepp'job_title'。 –

+0

讓我看看你的jobdata表格結構 – msonowal

回答

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")); 
} 
+0

這就是我要找的。謝謝接受..:) –

1

您必須循環$jobData,因爲它將返回所有行。例如:

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

它們是數組中的對象,因此您可以直接挑出數值。如果你需要的第一個項目,然後$jobData[0]->job_title$jobData->first()->job_title或可以循環foreach($jobData as $data){$data->job_title}

1

$jobDatacollection所以你不能直接訪問job_title$jobData->job_title。我想你想在你的視圖文件中訪問它們。因此做以下

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

你應該使用迭代集合中的eachmethod在Laravel:

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

我想顯示'job_title'已經是他們在數據庫中。但它返回所有'job_title'.I想要特定的一個。你能告訴我嗎?如果我將job_id更改爲任何'job_title',那麼所有時間都以你的方式返回「Admin Assistant」 –

+0

@ChoncholMahmud,如果你想獲取特定的'Job'項目,那麼你可能不應該用'Job :: all )',但使用返回單個'Job'實例的適當方法。例如,您可以使用[get](https://laravel.com/api/4.2/Illuminate/Database/Eloquent/Collection.html#method_get)方法。如果你仍然需要所有的工作項目,但需要根據Job屬性執行一些操作,然後像if($ item-> job_id == 12345){...}一樣在循環中添加一個檢查。所以目前還不清楚你的意思是「具體的」。 –