首页 > 解决方案 > 如何从数据透视表中检索元素

问题描述

我在job_seeker和job_offer(数据透视表=“job_seeker_job_offer)之间有多对多的关系,我有一个页面显示特定雇主的所有工作机会如何检索附加到特定job_offer的job_seeker的数量

显示工作机会的功能

 public function show_jobs($id){
        // $categories=Category::all();
        $job_offer_all=Job_offer::all();
        $employer=Employer::find($id);
        $job_offers=Job_offer::where('employer_id',$employer_id)->with('employer')->get();
        return view('employer.my_jobs',compact('employer_id','employer','job_offers','n_applicant'));
       }

将求职者与工作机会联系起来的功能

public function send_offer($id,$employer_id,$offer_id){
    $job_seeker=Job_seeker::find($id);
    $job_offer=Job_offer::find($offer_id);
    $employer=Employer::find($employer_id);
    // Notification::route('mail', $employer->email)
    // ->notify(new submit_job_demand($job_seeker));
    $job_seeker->job_offer()->attach($job_offer->id);

    }

标签: laraveleloquentmany-to-manyrelationship

解决方案


假设您在两个方向都有关系设置,您可以使用该withCount方法来获取关系的计数:

$jobOffers = JobOffer::where('employer_id', $employer_id)
    ->withCount('job_seekers')
    ->with('employer')
    ->get();

foreach ($jobOffers as $offer) {
    echo $offer->job_seekers_count;
}

Laravel 6.x 文档 - Eloquent - 关系 - 计数相关模型


推荐阅读