my laravel查询生成器返回空值:
$country = DB::table('participate_company')
->join('company', 'company.company_id', '=', 'participate_company.company_id')
->join('country', 'country.country_id', '=', 'company', 'company.country_id')
->join('competition', 'competition.competition_id', '=', 'participate_company.competition_id')
->select('country.country_name', DB::raw('COUNT(company.country_id) as total'))
->groupBy('company.country_id')
->groupBy('country.country_name')
->get();
表设计:
1. 参与公司
比赛id(pk/fk)
公司id(pk/fk)
2. 公司
公司id(pk)
公司名称
国家/地区id(fk)
3. 国家
国家/地区id(pk)
国家/地区名称
4. 竞争
竞争id(pk)
竞赛年
我想根据比赛年份得出不同国家的比赛结果。例如,竞赛年份=2012,国家名称=英格兰,计数(总数)=20。但是我当前的查询产生null。
sqlfiddle:http://sqlfiddle.com/#!9/a2092f/1号
1条答案
按热度按时间b4qexyjb1#
我建议使用laravelorm关系和渴望加载来解决这个问题。在公司模式中,我们将定义
country()
方法:在竞争模型中,定义方法
所以在控制器中你可以调用
groupBy
:我们会抓住的
country_id
在每个company
哪个在relations
的years
. 我刚刚测试了一个简单的例子,在那之后,我们将循环这个集合并计算它们。希望这有用。
p/s。按模型使用时,我的表的名称:
companies
,countries
,competitions
,company_competition