user3189734
user3189734

Reputation: 665

Laravel Model to View - Undefined variable

I'm sure I'm missing something blindingly obvious but cannot see to get the division name to appear on my view.

It keeps returning Undefined variable: division_name

DIVISON.PHP (Model)

<?php 

class Division extends \Eloquent {

    protected $table = 'divisions';

     public function scopeGetDivisionName($query, $slug)
    {
        return $query->select('division_name')
            ->join('division_industry_job', 'division_industry_job.division_id', '=', 'divisions.id')
            ->join('industryjobs', 'division_industry_job.industry_job_id', '=', 'industryjobs.id')
            ->where('industryjobs.slug', '=', $slug);

    }


}

JOBCONTROLLER.PHP (Controller)

public function showdivisionjob($slug)
    {

    $job = IndustryJob::where("slug", "=", $slug)->first();

    $division_name = Division::getDivisionName($slug)->firstOrFail();

    return View::make('job')->with('job', $job, $division_name);

    }

JOB.BLADE.PHP (View)

{{$division_name->division_name}}

{{$job->job_title}}

Upvotes: 0

Views: 2242

Answers (2)

esifis
esifis

Reputation: 39

You can use also the compact method for passing variables to your view :

public function showdivisionjob($slug)
 {
  $job = IndustryJob::where("slug", "=", $slug)->first();
  $division_name = Division::getDivisionName($slug)->firstOrFail();
  return View::make('job', compact('job', 'division_name'));

 }

Upvotes: 1

David Barker
David Barker

Reputation: 14620

You're not passing the variable to your view properly.

// This won't work
return View::make('job')->with('job', $job, $division_name);

It should be

return View::make('job')->with('job', $job)
                        ->with('division_name', $division_name);

Or

return View::make('job', array(
    'job' => $job, 
    'division_name' => $division_name
));

Upvotes: 3

Related Questions