【发布时间】:2018-05-04 15:23:51
【问题描述】:
我正在为我的出勤报告生成 csv 文件,这是我关于选择所有学生及其日志的查询:
$students = User::has('userStudentAttendance')->with(['userStudentAttendance' => function($query) use ($details,$search_from, $search_to){
$query->where('status', $details);
$query->where(function($query) use ($search_from, $search_to){
$query->whereBetween(DB::raw('Date(created_at)'), [$search_from, $search_to]);
});
$query->groupby('user_id')->groupby(DB::raw('Date(created_at)'));
}])
->leftjoin('sys_user_student', 'sys_user_student.user_id', '=', 'sys_user.user_id')
->leftjoin('sys_mf_section', 'sys_mf_section.section_id', '=', 'sys_user_student.section_id')
->leftjoin('sys_mf_grade', 'sys_mf_grade.grade_id', '=', 'sys_mf_section.grade_id')
->where('user_type_id', '4')
->where('sys_mf_section.section_id', $request->getParam('section_id'))
->where('sys_mf_grade.grade_id', $request->getParam('grade_id'))
->orderBy('sys_user.last_name')
->get();
if ($students->count() > 0)
{
echo "<pre>";
var_dump($test_array);
exit();
$csv = $this->csv;
$csv->exportHeader('attendance (' . date_format(date_create($request->getParam('search_from')),"M-d-Y") . ' - ' . date_format(date_create($request->getParam('search_to')),"M-d-y") . ')');
$csv->startInstance();
$csv->addRow([
'Student No.',
'Fullname',
'Gender',
'Date & Time'
]);
foreach ($students as $student) {
$logs = $student->userStudentAttendance;
$logs_array = array_column($logs, 'created_at');
$csv->addRow([
$student->identification_number,
$student->last_name.", ".$student->first_name,
$student->gender,
$student->userStudentAttendance
]);
}
$csv->endInstance();
die();
}
$userStudentAttendance 给出了一个json 对象,所以我使用了php 来显示它
$logs = json_decode($userStudentAttendance)
将其转换为关联数组,然后将其转换为 array_column 以获取我想要显示的唯一列
$logs_array = array_column($logs, 'created_at')
然后我在$csv->addRow([]) 中更改了$student->userStudentAttendance
现在看起来像这样:
foreach ($students as $student) {
$csv->addRow([
$student->identification_number,
$student->last_name.", ".$student->first_name,
$student->gender,
$logs_array
]);
}
那么当现在将其转换为 csv 时,$logs_array 的行是空的。怎么了?谁能帮我?提前致谢
【问题讨论】:
-
添加第二个参数 true 来获取数组?
$logs = json_decode($userStudentAttendance, true) -
我试过了,还是一样 :( ,它只给了我一个单词“Array”
-
$logs_array的值是多少?有没有什么?还是为空? -
嗨 @u_mulder
$logs_array有我需要的值,但是当我把它放到$csv->addRow([])时它变成了 null -
如果
$logs_array是数组,那么我想addRow会跳过这个数组值,因为它希望这个值是一个字符串。