Search code examples
laravellaravel-query-builder

db::raw adding is null in query


I am trying to use laravel query builder like:-

$users = DB::table('baid_collection')
         ->select(DB::raw('sum(total) as total_collect,collection_limit_c'))
         ->join('users_cstm', 'baid_collections.assigned_user_id', '=', 'users_cstm.id_c')
         ->where(DB::raw("assigned_user_id = '$userId' and DATE(date_entered)=CURDATE()"))
         ->groupBy('assigned_user_id')
         ->get();

This query should be like

select sum(total) as total_collect,collection_limit_c from `baid_collections` inner join `users_cstm` on `baid_collections`.`assigned_user_id` = `users_cstm`.`id_c` where assigned_user_id = '15426608-3ea5-f299-7a80-601bd06be2d9' and DATE(date_entered)=CURDATE() group by `assigned_user_id`

But last run query showing me

 select sum(total) as total_collect,collection_limit_c from `baid_collection` inner join `users_cstm` on `baid_collections`.`assigned_user_id` = `users_cstm`.`id_c` where assigned_user_id = '15426608-3ea5-f299-7a80-601bd06be2d9' and DATE(date_entered)=CURDATE() is null group by `assigned_user_id`

In query is null giving problem i dont want is null in query


Solution

  • Use whereRaw instead of where like

    $users = DB::table('baid_collections')
             ->select(DB::raw('sum(total) as total_collect,collection_limit_c'))
             ->join('users_cstm', 'baid_collections.assigned_user_id', '=', 'users_cstm.id_c')
             ->whereRaw("assigned_user_id = '{$userId}' and DATE(date_entered)=CURDATE()")
             ->groupBy('assigned_user_id')
             ->get();
    

    It's creating a problem due to where needs atleast two parameters and you are just passing one parameter