如何使用Laravel中主键的名称字段替换ID外键

时间:2018-04-04 09:50:28

标签: php laravel

问题1:我正在与Laravel建立一个休假门户,每个休假的工作人员都应该选择救援人员。所以在我的数据库中,我有一个Staff Table和Leave Table。离开表有id,staff_id和relief_staff_id

现在我想在视图中返回一个表格,以表格形式显示所有请假申请,其中包括“员工姓名,救济人员姓名等。

设置我的模型及其关系。 在我的LeavesController中,我已经完成了一个查询以加入我的休假和员工表,但由于此查询只会返回与员工记录匹配的所有休假记录,但不会将'relief_staff_id'替换为'name',我需要在循环时执行另一个查询通过从上一个查询获得的数据,从员工表中选择staff_name,其中id = relief_staff_id。

但是,每次我对前一个查询的结果进行foreach循环时,它只会向视图返回1行数据。

我尝试将每个值(包括新引入的'relief_staff_name')分配到关联数组中,但是当我返回数组时,它只有1个记录..

甚至尝试过执行array_push,但我无法使用视图中的数据。 我该怎么解决这个问题呢?

如何在控制器中对数组数据使用foreach循环,为每个数据分配额外的值,还返回数组中的所有数据以传递给我的视图?

现在我很想在我看来运行查询。

参见代码

public function history()
    {
        $application_history = 'yes';
        $loggedStaffId = Auth::user()->id;        
        $refinedData = array();

        //** Internal Function for decoding the relief staff name using the returned ID */
        function show_relief_staff($relief_staff_id)
        {
            $data = staff::find($relief_staff_id);
            return $data->name;
        }

        //** Joing Leave and Staff Tables */
        $rawData = \DB::table('staffs')
                        ->join('leaves', 'staffs.id', '=', 'leaves.staff_id')
                        ->select('leaves.*', 'staffs.name','staffs.email')
                        ->where('leaves.staff_id', '=', 1)
                        ->get();      
        //return $rawData;
        //** Lopping to replace relief staff Id with his name */
        foreach($rawData as $x)
        {
            $refinedData[]=$x;
            //$refinedData['relief_staff_name'] = show_relief_staff($x->relief_staff);
            $push = show_relief_staff($x->relief_staff);
            array_push($refinedData, $push);
            // $refinedData['staff_name'] = $x->name;
            // $refinedData['leave_type'] = $x->leave_type;
            // $refinedData['days_requested'] = $x->days_requested;
            // $refinedData['days_approved'] = $x->days_approved;
            // $refinedData['start_date'] = $x->start_date;
            // $refinedData['end_date'] = $x->end_date;
            // $refinedData['staff_comment'] = $x->staff_comment;
            // $refinedData['status'] = $x->status;
            // $refinedData['created_at'] = $x->created_at;
            // $refinedData['updated_at'] = $x->updated_at;
            // $refinedData['relief_staff'] = show_relief_staff($x->relief_staff);
        }


        return view('leave.history',compact('rawData', 'refinedData', 'application_history'));
    }

0 个答案:

没有答案