Laravel - Синтаксическая ошибка или нарушение доступа в агрегатной функции - PullRequest
0 голосов
/ 15 июня 2019

Я хочу выполнить агрегатную функцию и добиться результата, показанного на диаграмме ниже:

summary

Новый результат:

incorrect result

У меня есть этот запрос:

        $subscribers= Cloudsubscriptions::join("services","cloudsubscriptions.service_name","=","services.name")
            ->join("service_type","services.service_type","=","service_type.id")
            ->select("cloudsubscriptions.service_name"
                    ,"service_type.name as service_type"
                    ,DB::raw("(SELECT count(cloudsubscriptions.id) FROM 'cloudsubscriptions' WHERE 'is_subscribe' = 1) as total_active_users")
                    ,DB::raw("(SELECT count(cloudsubscriptions.id) FROM 'cloudsubscriptions' WHERE 'is_subscribe' = 0) as total_inactive_users")
                    ,DB::raw("(SELECT count(cloudsubscriptions.id) FROM 'cloudsubscriptions') as total_users"))
            ->groupBy("cloudsubscriptions.service_name")
        ->get();

Я ожидаю, что на диаграмме будет показан результат, но я получил эту ошибку

"SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с" cloudsubscription "WHERE" is_subscribe "= 1) как total_active_users, (SELECT co 'в строке 1 (SQL: выберите cloudsubscriptions. service_name, service_type. name как service_type, (SELECT count (cloudsubscription.id)) из' cloudsubscription 'ГДЕ'is_subscribe' = 1) как total_active_users, (SELECT count (cloudsubscription.id) FROM 'cloudsubscription' WHERE 'is_subscribe' = 0) как total_inactive_users, (SELECT count (cloudsubscription.id) FROM 'cloudsubscription') как total_users из cloudsubscriptionsвнутреннее соединение services на cloudsubscriptions. service_name = services. name внутреннее объединение service_type в services. service_type = service_type. id сгруппировать по cloudsubscriptions. service_name упорядочить по service_name пределу asc15 смещение 0) ◀ "

Как мне решить, пожалуйста?

1 Ответ

1 голос
/ 15 июня 2019

Ошибка вызвана одинарными кавычками вокруг имен таблиц и столбцов в необработанных выражениях.

Удалите их или используйте галочки:

$subscribers= Cloudsubscriptions::join("services","cloudsubscriptions.service_name","=","services.name")
    ->join("service_type","services.service_type","=","service_type.id")
    ->select("cloudsubscriptions.service_name"
            ,"service_type.name as service_type"
            ,DB::raw("(SELECT count(cloudsubscriptions.id) FROM `cloudsubscriptions` WHERE `is_subscribe` = 1) as total_active_users")
            ,DB::raw("(SELECT count(cloudsubscriptions.id) FROM `cloudsubscriptions` WHERE `is_subscribe` = 0) as total_inactive_users")
            ,DB::raw("(SELECT count(cloudsubscriptions.id) FROM `cloudsubscriptions`) as total_users"))
    ->groupBy("cloudsubscriptions.service_name")                ^                  ^
->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...