问题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'));
}