Как отобразить все задания, принадлежащие компании в Laravel

#php #laravel

#php #laravel

Вопрос:

Мне нужно отображать только задания, которые относятся к компании в companies/show.blade.php

Это метод show в CompanyController:

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

Это foreach в 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
  

Но он ничего не отображает. Где ошибка?

Комментарии:

1. Если вы определили отношение в своей модели, просто используйте $company-> jobs. Вы можете прочитать больше об отношениях здесь laravel.com/docs/7.x/eloquent-relationships

2. dd($jobs) в контроллере и проверьте, получаете ли вы какое-либо значение.

3. если ответ помог вам, пожалуйста, поддержите его, чтобы он мог помочь другим людям в будущем.

Ответ №1:

прежде всего, вы должны определить отношения, как показано ниже:

Модель компании

 public function jobs(){
    return $this->hasMany('AppJob');
}
  

Модель задания

 public function company(){
    return $this->belongsTo('AppCompany');
}
  

Контроллер

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

Просмотр блейда

 @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