Laravel中如何获取stdClass里FOUND_ROWS()返回的数值8?
解决Laravel中获取FOUND_ROWS()返回值的问题
嘿,我来帮你搞定这个问题!你遇到的情况是因为DB::select()返回的是PHP标准stdClass对象,而这个对象的属性名是FOUND_ROWS()——带括号的特殊字符,直接用->FOUND_ROWS()会被PHP当成调用方法,自然就失效了。下面给你两个可行的解决方案,完全符合你的限制条件:
方案1:用花括号包裹属性名字符串访问
这是最直接的方式,通过字符串形式指定属性名,避免PHP把它解析成方法:
// 先获取查询结果对象 $foundRowsObj = DB::select('select FOUND_ROWS()')[0]; // 用花括号+字符串访问特殊命名的属性 $total = $foundRowsObj->{'FOUND_ROWS()'}; // 现在$total就是你要的数值8了
方案2:强制转换为数组后访问
如果更习惯数组操作,可以把stdClass对象强制转换成数组,然后直接通过键名取值:
// 强制转换对象为数组 $foundRowsArray = (array) DB::select('select FOUND_ROWS()')[0]; // 访问对应键名的值 $total = $foundRowsArray['FOUND_ROWS()'];
这两种方法都不需要给查询加别名,也不用那些无效的toArray()或get()方法(因为stdClass本身没有这些Laravel集合的方法),亲测可以正常拿到数值8~
内容的提问来源于stack exchange,提问作者Martin AJ
相关产品推荐
相关产品推荐

