Php Laravel雄辩的原始查询,不带“;从「;参数

Php Laravel雄辩的原始查询,不带“;从「;参数,php,laravel,Php,Laravel,我需要通过Laravel Eloquent执行以下SQL查询: SELECT COUNT(*) FROM ( SELECT COUNT(*) FROM table GROUP BY field_1, field_2 ) AS total 如果我能够使用DB::类来完成,我不会有问题,但我不得不使用雄辩类: Customers::select(DB::raw($sql))->first()->total; 这段代码返回以下SQL: SELECT COUNT(*) FROM

我需要通过Laravel Eloquent执行以下SQL查询:

SELECT COUNT(*) FROM 
(
    SELECT COUNT(*) FROM table GROUP BY field_1, field_2
) AS total
如果我能够使用
DB::
类来完成,我不会有问题,但我不得不使用雄辩类:

Customers::select(DB::raw($sql))->first()->total;
这段代码返回以下SQL:

SELECT COUNT(*) FROM 
(
    SELECT COUNT(*) FROM table GROUP BY field_1, field_2
) AS total FROM customers

我想去掉“来自客户”这个词。

您可以在Elounting中使用子查询,例如:

DB::select(function ($query) {
    $query->selectRaw('COUNT(*) AS total')
        ->from('table')
        ->groupBy('field_1');
        ->groupBy('field_2');
}, 'table')->count('total');

用雄辩来做这件事真的没有意义

Customers::selectRaw('count(*')->fromSub(函数($subquery){
$subquery->selectRaw('count(*'))
->from('表')
->groupBy(['field1','field2']);
}(“总计”)
->get();
在控制台中运行此操作将产生以下结果:

--> use App\User; 
User::selectRaw('count(*)')->fromSub(function ($subquery) {
    $subquery->selectRaw('count(*)')
    ->from('table')
    ->groupBy(['field1','field2']);
}, 'total')
->toSql();

=> "select count(*) from (select count(*) from `table` group by `field1`, `field
2`) as `total`"

你会注意到我用的是我自己的模型。这就是我所说的使用雄辩是没有意义的。从调用
From()
或其任何变体(本例中为
fromSub
)的那一刻起,您就遵从查询生成器。在这种情况下,您甚至没有调用模型的表。

正如我在帖子中所说的,我不能使用
DB::select()
类。您不能使用“only Elount”来实现这一点。雄辩是一种语言。它映射了一张桌子。您的查询上没有表。