#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