2016-07-11 2 views
0

직원, employeeprofiles, employeeskills 테이블이 3 개 있습니다.Laravel 5 여러 (3) 테이블에서 데이터 가져 오기

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 테이블은 열 ID, FNAME, LNAME, 이메일을 가지고 다음과 같이 모델의 관계이다. 종업원 프로필 테이블에는 id, 종업원 테이블을 참조하는 외래 키인 employee_id, join_date 등이 있습니다. Employeeskills 테이블에는 employee 테이블과 skill_name을 참조하는 외래 키인 열 id, employee_id가 있습니다. 한 명의 직원은 많은 기술을 보유 할 수 있습니다. 이제 직원의 프로필 (employeeprofile 테이블)과 기술 (employeeskills 테이블)을 컨트롤러로 사용하여 직원 테이블의 모든 직원에게 액세스하고 해당 변수를보기로 전달하고 foreach를 사용하여 각 직원을 표시하려고합니다. 내가 두 테이블 (직원 및 employeeprofile)을 사용하면 잘 작동하지만 세 번째 테이블을 소개 할 때 결과가 나타나지 않습니다.

나는

$employees = Employee::with('employeeprofile')->employee()->get(); 

같은 그때 내가보기에 $ 직원 varible을 통과하고 나는 그것에 대해 어떻게 가야합니까

@foreach($employee as $employee) 
Name: $employee->fName, 
Joined: $employee->join_date, 
Skill 1 : I list all the skills the employee has 
@endforeach 

수행해야합니까?

답변

0

Eloquent ORM이 제공하는 이점을 사용해야합니다.

Employee 모델에서 정의한 메소드 (예 : employeeskill)를 사용하면 속성/속성으로 사용될 때 관련된 모든 객체를 가져올 수 있습니다.

$employees = Employee::all(); //get all (not soft-deleted) employees 
foreach($employees as $e) 
{ 
    $name = $e->fName; //The name of the employee 
    $join = $e->join_date; //The join date 
     foreach($employees->employeeskill as $skill) //Iterate over all skills of an employee 
     { 
      echo $skill->name; //echo the name of each skill 
     } 
} 

자세한 내용은 the docs을 확인하십시오.