Search code examples
laravelcodeignitereloquentsum

Laravel Sum with where and alias with Eloquent


I have this query for an old Codeigniter project:

$this->db->select("SUM(source = 'FBS) AS facebook");
$this->db->select("SUM(source = 'FBS' AND promotion = 0) AS facebook_promotion");
$this->db->select("SUM(source = 'IG') AS instagram");
$this->db->select("SUM(source = 'LP') AS landing_page");   

I'd like to have same result using Laravel, if is possible with Eloquent instead of Query Builder or Raw Query.


Solution

  • If you want to use raw Query Builder, it would be like,

    DB::table('table_name')->where('source','=','FBS')->sum('source');
    

    For Eloquent Models,

     Model::where('source','=','FBS')->sum('source')
    

    It also works with eloquent relationship.

    Besides, for multiple sum results like yours, it would be like,

    DB::table('table_name')->get( array(
      DB::raw("SUM(source = 'FBS) AS facebook"),
      DB::raw("SUM(source = 'FBS' AND promotion = 0) AS facebook_promotion"),
    ));