How to display all Jobs that belongs to Company in Laravel

474 views Asked by At

I need to display only jobs that belogs to company in companies/show.blade.php

This is show method in CompanyController:

public function show(Company $company)
{
    $jobs = Job::where('company_id', $company->id)
        ->latest()
        ->get();
            
    return view('pages.companies.show', [
        'jobs' => $jobs
    ]);
}

This is foreach in show.blade:

@foreach($jobs as $job)
    <div class="col-12 col-md-5">
        <a href="/job/{{ $job->id }}"><h2>{{ $job->job_name }}</h2></a>
    </div>
    <div class="col-12 col-md-7">
        <p>{{ $job->description }}</p>
    </div>
@endforeach

But it doesnt display anything. Where is mistake?

1

There are 1 answers

0
Naveed Ali On BEST ANSWER

first of all you have define relations as below:

Company Model

public function jobs(){
    return $this->hasMany('App\Job');
}

Job Model

public function company(){
    return $this->belongsTo('App\Company');
}

Controller

public function show(Company $company)
{
    $jobs = $company->jobs;
    
    return view('pages.companies.show', [
        'jobs' => $jobs
    ]);
}

Blade View

@foreach($jobs as $job)
    <div class="col-12 col-md-5">
        <a href="/job/{{ $job->id }}"><h2>{{ $job->job_name }}</h2></a>
    </div>
    <div class="col-12 col-md-7">
        <p>{{ $job->description }}</p>
    </div>
@endforeach