【发布时间】:2019-02-20 17:05:33
【问题描述】:
我正在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 SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含在功能上不依赖于 GROUP BY 子句中的列的非聚合列“conxn.project_associate_company.id”;这与 sql_mode=only_full_group_by 不兼容(SQL:select * from
project_associate_companywhere exists (select , (select count() fromproject_associate_companywherecompanies.id=project_associate_company.company_id和project_associate_company.deleted_at为空)作为associated_projects_countfromcompanieswhereproject_associate_company.company_id=companies.id并且存在(从连接 @987654346 中选择 * 987654347@ onprojects.id=project_owner_relation.project_id其中companies.id=project_owner_relation.company_id和slug= lodha-umbai-tower-tower-和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 服务器版本相对应的手册,以在第 1 行的 'GROUP BY company_id , company_specialisation_id from
project_associate_company' 附近使用正确的语法(SQL:select COUNT(*) AS count GROUP BY company_id , company_specialisation_id fromproject_associate_companywhere exists (select , (select count() fromproject_associate_companywherecompanies.id=project_associate_company.company_idandproject_associate_company.deleted_atis null) as @ 987654375@ fromcompanieswhereproject_associate_company.company_id=companies.id并且存在(从projects中选择 * 内部连接project_owner_relationonprojects.id.id。 987654386@ 其中companies.id=project_owner_relation.company_id和slug= lodha-patel-estate-tower-ab-mumbai 和projects.deleted_at为空4) 和@987654。deleted_at为空)和project_associate_company.deleted_at为空)"
建议我更好的方法来获得这个。谢谢。
【问题讨论】:
标签: php mysql laravel eloquent laravel-5.6