I’m new to Laravel. I have this page where I’m displaying all the candidates who have applied for a job.
job-applications.blade.php
<table class="table table-hover table-striped" id="dataTable" style="font-size: 13px !important"> <thead> <th style="padding:5px 22px 10px 6px !important">Candidate</th> <th style="padding:5px 22px 10px 6px !important">Status</th> <th style="padding:5px 22px 10px 6px !important">Edit</th> </thead> <tbody> @foreach ($applications as $application) <tr> <td> <a class="text-center" href="{{ route('candidates.show', $application->user->username) }}" target="_blank" class="text-theme">{{ $application->user->name }}</a> </td> <td> {{ $application->status }} </td> <td> <a href="route('employers.applicants.edit', $applicant->id)" class="mt-1 text-center btn-sm btn btn-outline-yellow"> <i class="fa fa-pencil"></i> Edit</a> </td> </tr> </tbody> </table>
Whenever I’m clicking on the edit button it is showing the error that
Trying to get property ‘id’ of non-object
Here’s my controller code for jobApplications
public function jobApplications($slug) { if (!Auth::check()) { session()->flash('error', 'Sorry !! You are not an authenticated Employer !!'); return back(); } $user = Auth::user(); $user_id = $user->id; $applicant = DB::table('job_activities')->where('user_id',$user_id)->get(); $job = Job::where('slug', $slug)->first(); $expreience_data = Experience::all(); $query = JobActivity::query(); $applications = $query->where('job_id', $job->id)->get(); $experiences = []; $education = []; $application_data = []; foreach ($applications as $application) { // Filter if (isset(request()->exp)) { $exp_data = CandidateProfile::with('experience')->where('experience_id', request()->exp)->where('user_id', $application->user_id)->first(); if ($exp_data) { $experiences[] = $exp_data; $education[] = UserQualification::where('user_id', $application->user_id)->first(); $application_data[] = $application; $filter['exp'] = request()->exp; } }else{ $experiences[] = CandidateProfile::with('experience')->where('user_id', $application->user_id)->first(); $education[] = UserQualification::where('user_id', $application->user_id)->first(); $application_data[] = $application; } } $education = $education ? $education[0] : []; $experience = $experiences ? $experiences[0] : []; $applications = $application_data; return view('frontend.pages.employers.job-applications', compact('user', 'applicant', 'job', 'applications','experience', 'education', 'filter', 'expreience_data')); }
It is giving error on the line:
$applications = $query->where('job_id', $job->id)->get();
As per the solutions I could find over internet it’s because I’m trying to assign a object type id to an array applications. I tried to change the first() to get() on $jobs variable but then it’s giving the error that
property [id] doesn’t exist on this collection instance.
Advertisement
Answer
There’s a problem here:
<a href="route('employers.applicants.edit', $applicant->id)" class="mt-1 text-center btn-sm btn btn-outline-yellow"> <i class="fa fa-pencil"></i> Edit </a>
You forgot the curly braces {{
}}
that should surround the route() helper
Should be:
<a href="{{ route('employers.applicants.edit', $applicant->id) }}" class="mt-1 text-center btn-sm btn btn-outline-yellow"> <i class="fa fa-pencil"></i> Edit </a>