Php 存储MySQL过程的Laravel和结果

Php 存储MySQL过程的Laravel和结果,php,mysql,laravel,laravel-5,frameworks,Php,Mysql,Laravel,Laravel 5,Frameworks,我正在处理一些非常旧的代码,我正试图在Laravel上运行。数据库很复杂,而且充满了不必要的长存储过程,我没有预算重写这些存储过程 在大多数情况下,这些都很好地工作,因为我可以访问像 $myID=$result[0]->id 我希望这不仅仅是我PHP知识的一个缺口 $result = DB::select(DB::raw("Call MyOldStoredProcedure()")); print_r($result); 这给了我: Array ( [0] => stdClass Obj

我正在处理一些非常旧的代码,我正试图在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)'];

搞定了。我不知道在访问对象时大括号是一种东西。是时候重新阅读一些文档了!非常感谢。