我有一个循环,我从数据库中获取项目,目前我的数组中有314个id,我得到的是这样的项目。
ServletContextInitializer
我知道我可以使用$s_standards = [];
$s_sub_category = [];
foreach ($sanitized_needs['standard'] as $skey => $standard) {
$sname = DB::table('lesson_observation_teacher_standards')->where('id', $standard)->first()->name;
$s_standards[] = $sname;
foreach ($sanitized_needs['sub_category'] as $key => $substandard) {
$name = DB::table('lesson_observation_teacher_standard_categories')->where('id', $substandard)->first()->name;
if ($key == $skey) {
$s_sub_category[$sname][] = $name;
}
}
}
,但我需要使用重复项来计算类别。
WhereIn
和$santized_needs['standard']
都有314个ID。但是,当它运行时,它会抛出$santized_needs['sub_category']
,但是当我注释掉查询并将其替换为字符串时,它将起作用。我的猜测是数据库正在限制大量查询。在浏览器的500 internal server error
和“网络”标签中都没有错误消息。
有什么方法可以禁用对数据库或laravel的限制吗?
更新:以下是laravel.log
数组的一些示例。
$sanitized_needs
答案 0 :(得分:0)
尝试了一切之后,我最终像这样更改了这部分代码
$s_standards = [];
$s_sub_category = [];
$all_subs = DB::table('lesson_observation_teacher_standard_categories')->pluck('name','id')->toArray();
foreach ($sanitized_needs['standard'] as $skey => $standard) {
$sname = DB::table('lesson_observation_teacher_standards')->where('id', $standard)->first()->name;
$s_standards[] = $sname;
foreach ($sanitized_needs['sub_category'] as $key => $substandard) {
$name = $all_subs[$substandard];
if ($key == $skey) {
$s_sub_category[$sname][] = $name;
}
}
}
现在,我只是预加载类别并在数组中搜索它们。
现在可以正常使用