如何在搜索时根据他们获得的评级以及未评级的评级对数据进行排序

How to sort the data while searching according to the ratings they get and also for not those are not rated

I have a project of human resource management where I want to display the ratings and non ratings jobseekers while searching as a employer.

I have tried this but this only gives jobseekers whose ratings has been set.
public function search(Request $request)
    {
        $query = $request->get('query');
        if (isset($query)) {
            $queryParam = explode(' ', $query);
        } else {
            $queryParam = null;
        }
        $jobseekers = JobSeekers::where(function ($que) use ($queryParam) {
            if (isset($queryParam)) {
                foreach ($queryParam as $queries) {
                    $que->orWhere('job_seekers.category', 'like', '%' . $queries . '%');
                    $que->orWhere('job_seekers.keywords', 'like', '%' . $queries . '%');
                    $que->orWhere('job_seekers.experience', 'like', '%' . $queries . '%');
                }
            }
        })->join('ratings', 'job_seekers.id', '=', 'ratings.js_id')
            ->groupBy('job_seekers.id')
            ->select('job_seekers.id', DB::raw('AVG( ratings.rating )  AS average_rating'))
            ->orderBy('average_rating', 'desc')
            ->get();
        return view('search.search_all', compact('jobseekers'));
    }
    I have a rating table .
    Schema::create('ratings', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('emp_id')->unsigned();
        $table->integer('js_id')->unsigned();
        $table->integer('rating')->unsigned();
        $table->longText('description')->nullable();
        $table->foreign('emp_id')->references('id')->on('employers');
        $table->foreign('js_id')->references('id')->on('job_seekers');
        $table->timestamps();
    });

I get data of only objects whose ratings is given but not for the datas that exists but has no rating.

尝试 leftJoin() 而不是 join()

JOIN 仅选择在 table.

中包含数据的结果

LEFT JOIN 选择所有结果并附加来自联接的 table.

的数据
public function search(Request $request)
{
    $jobseekers = JobSeekers
        ::when($request->get('query'), function($query) use ($request) {
            $words = explode(' ', $request->get('query'));
            foreach($words as $word){
                $query->orWhere('job_seekers.category', 'like', '%' . $word . '%');
                $query->orWhere('job_seekers.keywords', 'like', '%' . $word . '%');
                $query->orWhere('job_seekers.experience', 'like', '%' . $word . '%');
            }
        })
        ->leftJoin('ratings', 'job_seekers.id', '=', 'ratings.js_id')
        ->groupBy('job_seekers.id')
        ->select('job_seekers.id', DB::raw('AVG( ratings.rating )  AS average_rating'))
        ->orderBy('average_rating', 'desc')
        ->get();

    return view('search.search_all', compact('jobseekers'));
}