gpt4 book ai didi

excel - Laravel Excel 不能使用 stdClass 类型的对象作为数组

转载 作者:行者123 更新时间:2023-12-04 21:23:50 25 4
gpt4 key购买 nike

我必须使用 DB::select而不是调用模型,因为我的数据结构太复杂了。

我的主要 SQL 查询是;

    /* main mysql query */
$sql = "SELECT t1.* FROM `contracts`.`payments` as t1 LEFT JOIN `postcodes`.`" . $postcode_dataset . "` AS t2 ON t1.`VendorZIP` = t2.`postcode` WHERE ";

foreach ($unserialized_input as $key => $value) {
$sql .= "t2." . $key . " IN ('".implode("', '", $unserialized_input[$key])."') OR ";
}

$sql = rtrim($sql, " OR ");

$payments = DB::select($sql);

我正在尝试使用 Maatwebsite Excel 通过这样做来导出结果;
Excel::create('SME_Payments_Export-U', function($excel) use ($payments) {

$excel->sheet('Excel sheet', function($sheet) use ($payments) {

$sheet->setOrientation('landscape');
$sheet->fromArray($payments);

});

})->export('csv');

但我得到了错误;
Cannot use object of type stdClass as array

这是我的 var_dump 的示例;
array(176) {
[0]=>
object(stdClass)#302 (4) {
["Fiscal Year"]=>
string(5) "13/14"
["Contract Number"]=>
string(0) ""
["Foreign Ind"]=>
string(1) "N"
["Valued or Running"]=>
string(1) "R"
}
[1]=>
object(stdClass)#304 (4) {
["Fiscal Year"]=>
string(5) "13/14"
["Contract Number"]=>
string(0) ""
["Foreign Ind"]=>
string(1) "Y"
["Valued or Running"]=>
string(1) "V"
}
[2]=>
object(stdClass)#305 (4) {
["Fiscal Year"]=>
string(5) "13/14"
["Contract Number"]=>
string(0) ""
["Foreign Ind"]=>
string(1) "N"
["Valued or Running"]=>
string(1) "R"
}

如何转换 payments ?

最佳答案

根据 documentation您需要先将对象数组转换为数组数组,然后再将其传递给 fromArray()方法:

foreach ($payments as &$payment) {
$payment = (array)$payment;
}

$sheet->fromArray($payments);

关于excel - Laravel Excel 不能使用 stdClass 类型的对象作为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31698519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com