Попробуйте leftJoin()
вместо join()
.
JOIN
выбирает только результаты с данными в объединенной таблице.
LEFT JOIN
выбирает все результаты и прикрепляет данные из объединенной таблицы.
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'));
}