php – Laravel和存储的MySQL程序的结果

我正在处理一些非常古老的代码,我正试图在Laravel上运行.数据库很复杂,充满了不必要的长存储过程,我没有重写的预算.

在大多数情况下,这些都很好,因为我可以访问像
    $myID = $result [0] – > id

我希望这不仅仅是我PHP知识的一个空白……

$result = DB::select(DB::raw("Call MyOldStoredProcedure()"));
print_r($result);

这给了我:

Array ( [0] => stdClass Object ( [MIN(user_responses.sectionid)] => 2 ) )

我毫不奇怪无法访问

$number = $result[0]["MIN(user_responses.sectionid)"]; //or...
$number = $result[0]->...

我该怎么做才能从这个奇怪的关联数组/对象中检索这个奇异的结果?我即将放弃并解析数组字符串,但我知道有更好的方法.

最佳答案 最简单的选择是使用花括号以便能够引用特殊字符:

$number = $result[0]->{'MIN(user_responses.sectionid)'};

另一个选项是将变量设置为属性的名称,然后使用变量访问该属性:

$property = 'MIN(user_responses.sectionid)';
$number = $result[0]->$property;

此外,您还可以将对象转换为数组,并像最初尝试一样访问该属性.

$array = (array)$result[0];
$number = $array['MIN(user_responses.sectionid)'];

// or, if you're on PHP 7+
$number = ((array)$result[0])['MIN(user_responses.sectionid)'];
点赞