Laravel 5 get data from multiple(3) tables -
i have 3 tables: employees, employeeprofiles, employeeskills. model relationship follows
1. employee model public function employeeprofile(){ return $this->hasone('app\employeeprofile', 'employee_id'); } public function employeeskill(){ return $this->hasmany('app\employeeskill', 'employee_id); } 2. employeeprofile model public function employee(){ return $this->belongsto('app\employee', 'employee_id'); } 3. employeeskill model public function employee(){ return $this->belongsto('app\employee', 'employee_id'); }
employee table has columns id, fname, lname, email. employee profile table has id, employee_id foreign key referencing employee table, join_date , others. employeeskills table has columns id, employee_id foreign key referencing employee table , skill_name. 1 employee can have many skills. want access employees in employee table profiles(employeeprofile table) , skills(employeeskills table) in controller , pass variable view , display each employee using foreach. when use 2 table (employee , employeeprofile), works fine on introducing third table, dont results.
i need
$employees = employee::with('employeeprofile')->employee()->get();
then pass $employee varible view , perform
@foreach($employee $employee) name: $employee->fname, joined: $employee->join_date, skill 1 : list skills employee has @endforeach
how go it?
you should use advantages eloquent orm gives you.
the methods (e.g. employeeskill
) you've defined in employee model can used related objects when used property/attribute.
$employees = employee::all(); //get (not soft-deleted) employees foreach($employees $e) { $name = $e->fname; //the name of employee $join = $e->join_date; //the join date foreach($employees->employeeskill $skill) //iterate on skills of employee { echo $skill->name; //echo name of each skill } }
check out the docs more.
Comments
Post a Comment