Laravel - как мне получить данные подсчета в запросе? - PullRequest
0 голосов
/ 29 апреля 2018

Это запрос в MySQL

выберите e_id, h_name, d_name, drf_name, credit_num, is_required, e_semester, stdate, endate, c_month, Num от (ВЫБЕРИТЕ electcourse.id e_id, h_id, d_id, ref_id, e_semester, stdate, endate, c_month, count (e_id) как num ОТ electcourse левое соединение period в p_id = точка. id левое соединение hospitalxdepartment на hd_id = больницаx, отделение. id оставил присоединиться board на электрокурсе. id = e_id где st_id = 'admin' сгруппировать e_id) T левое соединение hospital в h_id = больница. id левое соединение department на d_id = отдел. id оставил присоединиться departmentreference на ref_id = drfid, где df_semester = 105

Это мой запрос в laravel, но он получил сообщение об ошибке.

public function get_course($st_id,$semester){
        $from=DB::table('electcourse')
                ->selectRaw('electcourse.id as e_id','h_id','d_id','ref_id','e_semester','stdate','endate','c_month','count(e_id) as num',)
                ->leftjoin('period','p_id','period.id')
                ->leftjoin('hospitalxdepartment','hd_id','hospitalxdepartment.id')
                ->leftjoin('board','electcourse.id','e_id')
                ->where('st_id','=',$st_id)
                ->where('e_semester','=',$semester)
                ->groupBy('e_id');
        $query=DB::query()
                ->select('e_id','h_name','d_name','drf_name','credit_num','is_required','e_semester','stdate','endate','c_month')
                ->fromSub($from, 'T')
                ->leftjoin('hospital','h_id','hospital.id')
                ->leftjoin('department','d_id','department.id')
                ->leftjoin('departmentreference','ref_id','drfid')
                ->where('df_semester','=',$semester)->orderBy('c_month')->get();
        return $query;

    }

Я уверен, что это будет работать, если я не использовал count в строке "select". Кто-нибудь знает, как это исправить с помощью правильного метода подсчета?

сообщение об ошибке: «Class App \ Repositories \ BoardRepository не существовать" Это означает, что формат БД неправильный.

1 Ответ

0 голосов
/ 29 апреля 2018

Я нашел способ сгенерировать правильный запрос, но он получит сообщение об ошибке.

функция запроса

public function get_course($st_id,$semester){

    $from=DB::table('electcourse')
            ->select('electcourse.id as e_id','h_id','d_id','ref_id','e_semester','stdate','endate','c_month',DB::raw('count(e_id) as num'))
            ->leftjoin('period','p_id','period.id')
            ->leftjoin('hospitalxdepartment','hd_id','hospitalxdepartment.id')
            ->leftjoin('board','electcourse.id','e_id')
            ->where('st_id','=',$st_id)
            ->where('e_semester','=',$semester)
            ->groupBy('e_id');
    $query=DB::query()
            ->select('e_id','h_name','d_name','drf_name','credit_num','is_required','e_semester','stdate','endate','c_month')
            ->fromSub($from, 'T')
            ->leftjoin('hospital','h_id','hospital.id')
            ->leftjoin('department','d_id','department.id')
            ->leftjoin('departmentreference','ref_id','drfid')
            ->where('df_semester','=',$semester)->orderBy('c_month')->get();
    return $query;

}

Сообщение об ошибке:

"SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1055 'yangming567.electcourse.id' отсутствует в GROUP BY (SQL: выберите e_id, h_name, d_name, drf_name, credit_num, is_required, e_semester, stdate, endate, c_month из (выберите electcourse. id как e_id, h_id, d_id, ref_id, e_semester, stdate, endate, c_month, считать (e_id) как num от electcourse левое соединение period в p_id = period. id левое соединение hospitalxdepartment на hd_id = hospitalxdepartment. id осталось присоединиться board к electcourse. id = e_id, где st_id = admin и e_semester = 105 сгруппировать по e_id) как T присоединиться слева hospital в h_id = hospital. id левое соединение department на d_id = department. id левое соединение departmentreference на ref_id = drfid, где df_semester = 105 заказ по c_month asc) Тем не менее, я копирую этот запрос сообщения об ошибке в Mysql, и это работа !!!! Кто-нибудь знает, как исправить мой запрос в laravel?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...