将心比心,方得人心~

laravel 结合原生表达式对不同状态的数据进行统计

周洲 2021-05-19 09:46:45

laravel 结合原生表达式对不同状态的数据进行统计

$users = DB::table('users')
                     ->select(DB::raw('count(*) as user_count, status')) // 此方法小小心使用,可能导致sql注入,可用另一个原生方法代替  ->selectRaw('count(*) as user_count, status') 此方法可接收一个可选参数代替问号,如 ->selectRaw('price * ? as price_with_tax', [1.0825])
                     ->where('status', '<>', 1)
                     ->groupBy('status')
                     ->get();


查询结果示例:

Illuminate\Support\Collection Object
(
    [items:protected] => Array
        (
            [0] => stdClass Object
                (
                    [status] => 1
                    [total_sales] => 100.00
                )

            [1] => stdClass Object
                (
                    [status] => 2
                    [total_sales] => 1000.00
                )

            [2] => stdClass Object
                (
                    [status] => 3
                    [total_sales] => 2000.00
                )

            [3] => stdClass Object
                (
                    [status] => 4
                    [total_sales] => 
                )

        )

)

// 添加条件status不等于4的

        $users = DB::table('users')
            ->select('status', DB::raw('SUM(price) as total_sales'))
            ->groupBy('status')
            ->whereRaw('status != ?', [4])
            ->get();

// 添加条件,总价格大于1900的

        $users = DB::table('users')
            ->select('status', DB::raw('SUM(price) as total_sales'))
            ->groupBy('status')
            ->whereRaw('status != ?', [4])
            ->havingRaw('SUM(price) > ?', [1900])
            ->get();








打赏

『微信打赏』

Tag标签laravel  统计 

我是有底线的