我试图获取PHPExcel(而不是Laravel包装器:https://github.com/Maatwebsite/Laravel-Excel)来导出我的视图。我正在运行的查询将多行作为多维数组返回(我使用DB :: select和绑定,因为查询对于Fluent来说有点复杂)
结果如下:
array(3) {
[0]=> object(stdClass)#224 (3) {
["name"]=> string(13) "Administrator"
["TotalRequest"]=> string(6) "100.00"
["TotalGiven"]=> string(6) "150.00" }
[1]=> object(stdClass)#226 (3) {
["name"]=> string(14) "Beta Alpha Psi"
["TotalRequest"]=> string(6) "363.00"
["TotalGiven"]=> string(6) "200.00" }
[2]=> object(stdClass)#227 (3) {
["name"]=> string(30) "Student Government Association"
["TotalRequest"]=> string(7) "1225.00"
["TotalGiven"]=> string(6) "620.00" }
}
Laravel-Excel软件包只接受$ data数组(),所以我很困惑如何将多维数组转换为我的视图。如果我使用替代
,我可以让它工作View::make(xxxx)->with('example', $example)
当我有参与此对象的时候,我是否忽略了如何将$ data作为数组传递?
答案 0 :(得分:2)
它不是多维array
,而是array
个对象。如果您使用以下内容将array
传递给您的视图:
View::make('xxxx')->with('example', $example)
然后在您的视图中,您可以使用@foreach
循环播放,如下所示:
@foreach($example as $item)
{{ $item->name }}
{{ $item->TotalRequest }}
{{ $item->TotalGiven }}
@endforeach
因为,数组包含多个stdClass
个对象,第一个对象是(0
):
{
["name"]=> string(13) "Administrator"
["TotalRequest"]=> string(6) "100.00"
["TotalGiven"]=> string(6) "150.00"
}
因此,您也可以使用类似$example
的内容从$example[0]
数组中检索第一个对象,并检索您可能使用的第二个对象$example[1]
,依此类推。
答案 1 :(得分:0)
好吧我建议您只需使用下面的方法直接更改获取模式以返回数组
public function getQueryResult($returnQueryAs = null)'
{
$tablename = 'YourAwesomeTable';
if($returnQueryAs == 'array')
{
DB::connection()->setFetchMode(PDO::FETCH_ASSOC);
}
return DB::table($tablename)->get();
}
然后做这样的事情
public function exportAsExcel()
{
$filename = 'nameoffile';
$data = $this->getQueryResult($as = 'array');
Excel::create($filename, function($excel) use ($filename, $data) {
// Set the title
$excel->setTitle($filename);
// Chain the setters
$excel->setCreator('Damilola Ogunmoye');
$excel->sheet('SHEETNAME', function($sheet) use ($data) {
$sheet->fromArray($data);
});
})->download('xls');
}
这将获得一个关联数组,而不是可以直接传递的stdClass对象。