Php laravel toArray()花费的时间太长

Php 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

我有这段代码,我正在尝试填充json,因为这是一个API

$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()
,只合并两个数组。您可以尝试分别运行它们(它们都是公共方法),看看是否有效,这可能有助于调试出错的地方。@FDL
relationsToArray()
加载页面,
attributesToArray()
没有,它只是一直在加载。作为旁注,我建议检查$mids不是空数组。如果空数组中有$mids,则WHERE约束将抛出SQLException。