Я занимаюсь разработкой приложения в Laravel 5.6
У меня есть простая таблица со следующими столбцами:
company_id project_id company_role_id company_specialisation_id
И это представляет модель AssociateCompanies
, которая имеет отношение company
, project
, role
, specialisation
, теперь у меня есть какой-то запрос для получения атрибута:
$companies = AssociateCompany::whereHas('company', function ($q) use ($request) {
$q->whereHas('projectOwners', function ($q) use($request) {
$q->where('slug', $request->slug);
});
})->groupBy('company_id', 'company_specialisation_id')->with('company', 'role', 'specialisation');
Я хочу собрать все уникальные поля с их счетами из двух столбцов company_id
и specialisation_id
, но groupBy
не дает мне правильных результатов, поэтому я не могу продолжить:
SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1055 Выражение №1 списка SELECT отсутствует в предложении GROUP BY и содержит неагрегированный столбец «conxn.project_associate_company.id», который функционально не зависит от столбцов в предложении GROUP BY; это несовместимо с sql_mode = only_full_group_by (SQL: выберите * из project_associate_company
там, где существует (выберите , (выберите количество () из project_associate_company
, где companies
. id
= project_associate_company
. company_id
и project_associate_company
. deleted_at
равно нулю) как associated_projects_count
из companies
, где project_associate_company
. company_id
= companies
. id
и существует (выберите * из projects
внутреннее соединение project_owner_relation
на projects
. id
= project_owner_relation
. project_id
, где companies
. id
= project_owner_relation
. company_id
и slug
= lodha-patel-estate-tower-ab-mumbai и projects
. deleted_at
равно нулю) и companies
. deleted_at
равно нулю) и project_associate_company
. deleted_at
равно нулю группы по company_id
, company_specialisation_id
) "
Итак, я попытался запустить необработанные запросы, например так:
$companies = AssociateCompany::whereHas('company', function ($q) use ($request) {
$q->whereHas('projectOwners', function ($q) use($request) {
$q->where('slug', $request->slug);
});
})->selectRaw(DB::raw('COUNT(*) AS count GROUP BY company_id , company_specialisation_id'))
->with('company', 'companyRole', 'specialisation')->get();
SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'GROUP BY company_id, company_specialisation_id из project_associate_company
' в строке 1 (SQL: выберите COUNT (*) AS count GROUP BY company_id, company_specialisation_id из project_associate_company
где существует (выберите , (выберите количество () из project_associate_company
, где companies
. id
= project_associate_company
. company_id
и project_associate_company
. deleted_at
равно нулю) как associated_projects_count
с companies
, где project_associate_company
. company_id
= companies
. id
и существует (выберите * из projects
внутреннее соединение project_owner_relation
на projects
. id
= project_owner_relation
. project_id
где companies
. id
= project_owner_relation
. company_id
и slug
= lodha-patel-estate-tower-ab-mumbai и projects
. deleted_at
равно нулю) и companies
. deleted_at
равно нулю) и project_associate_company
. deleted_at
равно нулю) "
Предложите мне лучший способ получить это. Спасибо.