Php laravel toArray()花费的时间太长
我有这段代码,我正在尝试填充json,因为这是一个APIPhp laravel toArray()花费的时间太长,php,laravel,Php,Laravel,我有这段代码,我正在尝试填充json,因为这是一个API $mids = Message::where('sender', $user) ->orWhere('receipient', $user) ->lists('mid'); $last = Message::whereIn('mid', $mids)->orderBy('mid', 'desc')->first(); $fin
$mids = Message::where('sender', $user)
->orWhere('receipient', $user)
->lists('mid');
$last = Message::whereIn('mid', $mids)->orderBy('mid', 'desc')->first();
$final = $last->toArray();
return $final;
如果我没有将$last设置为数组的最后一个,那么它将返回如下内容:
"incrementing": true,
"timestamps": true,
"exists": true
但是,当我添加toArray()函数时,它只是不断地加载,直到服务器说超出了执行时间。为什么?
其他信息
此代码位于模型中,其
getLastMsgAttribute
和我将last\u msg
附加为@nath。阵列中提到的开发人员将确定需要检索的属性和关系,以便将集合转换为模型。我们的问题是模型上有3个变种(例如getSomeAttribute),其中一个对每个模型执行DB查询,这意味着2000个查询(所有查询实际上都是重复的)
因此,请检查您的属性和关系
我认为这允许您定义自己的toArray方法,这样您就可以只选择最终数组所需的字段
您也可以只使用Laravel的collection“Pulk”方法。
toArray
同时运行attributesToArray()
和relationsToArray()
,只合并两个数组。您可以尝试分别运行它们(它们都是公共方法),看看是否有效,这可能有助于调试出错的地方。@FDLrelationsToArray()
加载页面,attributesToArray()
没有,它只是一直在加载。作为旁注,我建议检查$mids不是空数组。如果空数组中有$mids,则WHERE约束将抛出SQLException。