Php fetchall返回laravel中的stdClass对象

Php fetchall返回laravel中的stdClass对象,php,laravel,db2,odbc,Php,Laravel,Db2,Odbc,我正在对Laravel中的db2 ibm数据库执行查询 call STOREDPROC.GET('leaders', '{"params": ""}', 'lead_management', 'FR'); 问题是fetchAll()返回stdClass对象的数组 Array ( [0] => stdClass Object ( [noref] => 368 [nofab] => FORT [actionname]

我正在对Laravel中的db2 ibm数据库执行查询

call STOREDPROC.GET('leaders', '{"params": ""}', 'lead_management', 'FR');
问题是fetchAll()返回stdClass对象的数组

Array ( 
    [0] => stdClass Object ( 
        [noref] => 368 
        [nofab] => FORT 
        [actionname] => FORT BP720 
        [longactionname] => Epargne fort 
        [startat] => 1999-10-29 
        [endat] => 1999-10-29 
        [monthduration] => 0 
        [kam] => CTER 
        [cls] => SDO 
        [status] => O 
        [deletebyte] => 
    )
) 
这很好,但我更希望得到一个数组。我必须通过http请求发送数据,不幸的是,在请求的另一端接收到的数据以流的形式返回

那么,如何使fetchAll返回一个数组而不是stdObject类呢

我尝试在laravel中编辑database.php文件中的选项,如下所示:

'options' => [
    PDO::ATTR_CASE => PDO::CASE_LOWER,
    PDO::ATTR_PERSISTENT => false,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
],
但它仍然给出了完全相同的结果

这是我在laravel中获取数据的代码:

private function execute($verb, $args): array
{
    $query = $this->buildQueryString($verb, $args);

    $this->buildConnection();

    $result = DB::connection('odbc')->select($query);

    return $result;
}

我遇到了同样的问题。不幸的是,这个PDO设置深入到框架的内核中,无法更改。为了摆脱这种情况,我不得不编写不太好的代码:

foreach($result as$key=>$item){
$result[$key]=(数组)$item;
}

我遇到了同样的问题。不幸的是,这个PDO设置深入到框架的内核中,无法更改。为了摆脱这种情况,我不得不编写不太好的代码:

foreach($result as$key=>$item){
$result[$key]=(数组)$item;
}
您可以执行以下操作:

$result = json_encode($result);
$result = json_decode($result, true);
您可以这样做:

$result = json_encode($result);
$result = json_decode($result, true);

问题似乎是对特殊字符的编码导致语法错误,从而导致格式无效的json。我将其转换为utf8编码,然后用json_解码而不是编码

public static function convert_from_latin1_to_utf8_recursively($result)
{
    if (is_string($result)) {
        return utf8_encode($result);
    } elseif (is_array($result)) {
        $ret = [];
        foreach ($result as $i => $d) $ret[ $i ] = self::convert_from_latin1_to_utf8_recursively($d);

        return $ret;
    } elseif (is_object($result)) {
        foreach ($result as $i => $d) $result->$i = self::convert_from_latin1_to_utf8_recursively($d);

        return $result;
    } else {
        return $result;
    }
}
然后在我的回答中:

$response = json_decode($response, true);
return $response;

问题似乎是对特殊字符的编码导致语法错误,从而导致格式无效的json。我将其转换为utf8编码,然后用json_解码而不是编码

public static function convert_from_latin1_to_utf8_recursively($result)
{
    if (is_string($result)) {
        return utf8_encode($result);
    } elseif (is_array($result)) {
        $ret = [];
        foreach ($result as $i => $d) $ret[ $i ] = self::convert_from_latin1_to_utf8_recursively($d);

        return $ret;
    } elseif (is_object($result)) {
        foreach ($result as $i => $d) $result->$i = self::convert_from_latin1_to_utf8_recursively($d);

        return $result;
    } else {
        return $result;
    }
}
然后在我的回答中:

$response = json_decode($response, true);
return $response;

如果您使用的是eloquent,那么可以使用@Andrei{“message”:“调用数组上的成员函数toArray()”,“status_code”:500}您已经在获取数组了。更改PDO设置以获取类。您可以对每个查询使用单独的获取方法。请显示您实际用于获取结果的代码。@Andrei仍然会给出相同的错误如果您使用eloquent,您可以使用@Andrei{“消息”:“调用数组上的成员函数toArray()”,“状态代码”:500}您已经在获取数组。更改PDO设置以获取类。您可以对每个查询使用单独的获取方法。请显示您实际用于获取结果的代码。@Andrei仍然给出相同的错误您的解决方案适用于print_r(),但如果我只是执行echo,它会说值必须是一个数组,布尔给定,状态代码:500问题似乎是对特殊字符的编码导致语法错误,从而导致格式无效的json。我将其转换为utf8编码,然后使用json_解码而不是编码。您的解决方案使用print_r()但如果我只使用echo,它会说该值必须是一个数组,给定布尔值,状态代码:500。问题似乎是对特殊字符的编码导致语法错误,从而导致格式无效的json。我将其转换为utf8编码,然后用json_解码而不是编码。在使用json_编码之前,“{\”消息\\:\”App\\\\Power\\\\StoredProcedure::execute()的返回值必须是数组类型,null returned\”,“\”status_code\”:500}”是什么类型的$result?你能使用dd函数在客户端中获取它吗(请在这里发布部分结果)?使用dd($result)我得到一个巨大的流。问题似乎是对特殊字符的编码导致语法错误,从而导致格式无效的json。我将其转换为utf8编码,然后用json_解码而不是编码。在使用json_编码之前,“{\”消息\\:\”App\\\\Power\\\\StoredProcedure::execute()的返回值必须是数组类型,null returned\”,“\”status_code\”:500}”是什么类型的$result?你能使用dd函数在客户端中获取它吗(请在这里发布部分结果)?使用dd($result)我得到一个巨大的流。问题似乎是对特殊字符的编码导致语法错误,从而导致格式无效的json。我将其转换为utf8编码,然后用json_解码而不是编码。