2015-04-12 49 views
1

真正挣扎着与查询和环顾四周我无法找到我需要的答案!Laravel查询生成器MySQL的 - 计数/ w组

我有4个表,提供,用户,savedoffers和usedoffers。 savedoffers/usedoffers表是用户之间的关系表&优惠。

我想返回报价清单,然后左连接usedoffers和savedoffers。然后按报价(例如优惠ID)对他们进行分组,然后计算有多少用户保存了优惠,以及有多少用户使用了这些优惠。

我所有的努力,我在这里后......

$offers = DB::table('offers') 
      ->select('offers.id as id', 
        'offers.code', 
        'offers.title', 
        'offers.date', 
         DB::raw('count(usedoffers.id) as used_count'), 
         DB::raw('count(savedoffers.id) as saved_count')) 
      ->leftjoin('savedoffers', 'offers.id', '=', 'savedoffers.offer_id') 
      ->leftjoin('usedoffers', 'offers.id', '=', 'usedoffers.offer_id') 
      ->orderBy('offers.date', 'asc') 
      ->groupBy('offers.id') 
      ->get(); 

这还是因为它似乎算都不起作用:/

很多帮助表示赞赏,因为感觉像IM敲我的头靠墙!

回答

2

一般不耐烦我已经回答了我的问题..

我需要算usedsaved这给了我,我一直在寻找...

所以下面的输出不同的ID。 ..

$offers = DB::table('offers') 
        ->select('offers.id as id', 
          'offers.code', 
          'offers.title', 
          'offers.date', 
           DB::raw('count(DISTINCT usedoffers.id) as used_count'), 
           DB::raw('count(DISTINCT savedoffers.id) as saved_count')) 
        ->leftjoin('savedoffers', 'offers.id', '=', 'savedoffers.offer_id') 
        ->leftjoin('usedoffers', 'offers.id', '=', 'usedoffers.offer_id') 
        ->where('company_id', '=', User::find(\Auth::user()->id)->company_id) 
        ->orderBy('offers.date', 'asc') 
        ->groupBy('offers.id') 
        ->get(); 

难以尝试像这样工作,所以最终只用MySQL就能正确解决问题。

我试图输出与var_dump(DB::getQueryLog());声明,它不工作。这是因为在Laravel中,您需要在查询之前启动Querylog,并添加以下语句DB::enableQueryLog();

希望这可以帮助别人了!