__('Status 1'), '0' => __('Status 0')]; } public function getHideList() { return ['1' => __('Hide 1'), '0' => __('Hide 0')]; } public function getSalesTypeList() { return ['1' => __('Sales_type 1'), '3' => __('Sales_type 3'), '2' => __('Sales_type 2')]; } public function getQuestionModeList() { return ['sort' => __('Question_mode sort'), 'random' => __('Question_mode random')]; } public function getStatusTextAttr($value, $data) { $value = $value ? $value : (isset($data['status']) ? $data['status'] : ''); $list = $this->getStatusList(); return isset($list[$value]) ? $list[$value] : ''; } public function course() { return $this->belongsTo('app\admin\model\course\Course', 'bind_course', 'id', [], 'LEFT')->setEagerlyType(0); } /** * 获取绑定的题库分组 * @param $exercisesId * @return mixed */ public function getBindWarehouseGroup($exercisesId){ $data = \app\admin\model\app\exam\ExercisesBindWarehouseGroup::with(['group'])->where([ 'exercises_id'=>$exercisesId, ])->order('id','asc')->select(); // 转换为数组处理 $result = collection($data)->toArray(); // 处理未分组的情况(warehouse_group_id = 0 或 group.id 为 null) $allGroupIds = null; foreach ($result as &$item) { // 检查 group.id 是否为 null(表示关联的分组不存在) if (empty($item['group']['id'])) { // 计算未分组的题目数量(只查询一次) if ($allGroupIds === null) { $allGroupIds = \app\admin\model\app\exam\WarehouseGroup::field('id')->column('id'); } $questionCount = \app\admin\model\app\exam\WarehouseQuestion::where(['group_id' => ['NOT IN', $allGroupIds]])->count(); // 设置未分组信息 $item['group'] = [ 'id' => 0, 'name' => '未分组', 'question_count' => $questionCount ]; } } return $result; } }