首页 > 解决方案 > Laravel - 如何在自引用表中获取 Line Manager FullName

问题描述

在我的 Laravel-5.8 项目中,我有这个模型:

class HrEmployee extends Model
{
   protected $table = 'hr_employees';

   protected $fillable = [
              'id',
              'employee_code',
              'line_manager_id',
              'employee_designation_id',
              'employee_grade_level_id',
              'first_name',
              'last_name',
              'nationality_id',
              'other_name',
              'is_hod',
              'department_id',
          ];

   public function linemanager()
   {
      return $this->belongsTo('App\Models\Hr\HrEmployee','line_manager_id');
   }

   public function designation()
   {
       return $this->belongsTo('App\Models\Hr\HrDesignation','employee_designation_id');
   }

   public function gradelevel()
   {
       return $this->belongsTo('App\Models\Hr\HrGradeLevel','employee_grade_level_id');
   }

   public function department()
   {
       return $this->belongsTo('App\Models\Hr\HrDepartment','department_id');
   }

   public function fullName()
   {
       return $this->first_name . ' ' . $this->other_name . ' ' . $this->last_name;
   }  
}

每个员工都有一个直线经理 (line_manager_id)。Line Manager 下有多个员工,但一名员工不能拥有多个 Line Manager。直线经理也是员工

控制器

public function index()
{
    $employees      =       HrEmployee::all();
    return view('dashboard')
            ->with('employees', $employees);   
}

看法

         @foreach($employees as $key => $employee)
        <!-- Profile Image -->
        <div class="card card-secondary card-outline">
          <div class="card-body box-profile">

            <h3 class="profile-username text-center">{{auth()->user()->first_name}} {{auth()->user()->last_name}}</h3>

            <p class="text-muted text-center">Designation: {{isset($employee->designation) ? $employee->designation->designation_name : 'N/A'}}</p>

            <ul class="list-group list-group-unbordered mb-3">
              <li class="list-group-item">
                <b>Staff ID:</b> <a class="float-right">{{isset($employee->employee_code) ? $employee->employee_code : 'N/A'}}</a>
              </li>
              <li class="list-group-item">
                <b>Department:</b> <a class="float-right">{{isset($employee->department) ? $employee->department->dept_name : 'N/A'}}</a>
              </li>
              <li class="list-group-item">
                <b>Grade Level:</b> <a class="float-right">{{isset($employee->gradelevel) ? $employee->gradelevel->grade_level_name : 'N/A'}}</a>
              </li>
              <li class="list-group-item">
                <b>Line Manager:</b> <a class="float-right"></a>
              </li>
            </ul>


          </div>
          <!-- /.card-body -->
        </div>
        <!-- /.card -->
        @endforeach 

员工表有 line_manager_id。所以它必须以此为参考点。从上面的视图刀片中,如何显示员工直线经理的全名(名字、姓氏)?

谢谢你。

标签: laravel

解决方案


推荐阅读