Php 如何在laravel 5的select方法中添加子查询

Php 如何在laravel 5的select方法中添加子查询,php,laravel-5.2,Php,Laravel 5.2,代码示例如下所示: DB::table('orders')->select([ DB::raw('SELECT COUNT(id) AS order_count WHERE type = 2'), DB::raw('SELECT SUM(id) AS order_sum WHERE type = 2') ])->paginate(20); 所选字段是统计字段,子查询包含多个条件。我这样键入代码,但代码无法工作,并且出现语法错误,然后我无法找出错误所在。谁能帮助我?谢

代码示例如下所示:

DB::table('orders')->select([
    DB::raw('SELECT COUNT(id) AS order_count WHERE type = 2'),
    DB::raw('SELECT SUM(id) AS order_sum WHERE type = 2')
])->paginate(20);

所选字段是统计字段,子查询包含多个条件。我这样键入代码,但代码无法工作,并且出现语法错误,然后我无法找出错误所在。谁能帮助我?谢谢

应该是这样吗

DB::table('orders')->select(
    DB::raw('COUNT(id) AS order_count'),
    DB::raw('SUM(id) AS order_sum')
)->where(type, 2)
->paginate(20);

我最初的SQL是这样的:

SELECT
    o1.store_id,
    (SELECT Count(id) FROM `order` WHERE type = 2 AND `order`.store_id = o1.store_id) AS package_order_count,
    (SELECT SUM(price) FROM `order` WHERE type = 2 AND `order`.store_id = o1.store_id) AS package_order_sum,
    (SELECT Count(id) FROM `order` WHERE type = 3 AND `order`.store_id = o1.store_id) AS member_order_count,
    (SELECT SUM(price) FROM `order` WHERE type = 3 AND `order`.store_id = o1.store_id) AS member_order_sum
FROM
    `order` as o1
WHERE
    `o1`.store_id > 0 AND `o1`.`from` = 1
GROUP BY `o1`.store_id
DB::table('orders')->select([
    DB::raw('SELECT COUNT(id) AS order_count WHERE type = 2'),
    DB::raw('SELECT SUM(id) AS order_sum WHERE type = 2')
    DB::raw('SELECT COUNT(id) AS member_order_count WHERE type = 3'),
    DB::raw('SELECT SUM(id) AS member_order_sum WHERE type = 3')
])->paginate(20);
我的php代码是这样的:

SELECT
    o1.store_id,
    (SELECT Count(id) FROM `order` WHERE type = 2 AND `order`.store_id = o1.store_id) AS package_order_count,
    (SELECT SUM(price) FROM `order` WHERE type = 2 AND `order`.store_id = o1.store_id) AS package_order_sum,
    (SELECT Count(id) FROM `order` WHERE type = 3 AND `order`.store_id = o1.store_id) AS member_order_count,
    (SELECT SUM(price) FROM `order` WHERE type = 3 AND `order`.store_id = o1.store_id) AS member_order_sum
FROM
    `order` as o1
WHERE
    `o1`.store_id > 0 AND `o1`.`from` = 1
GROUP BY `o1`.store_id
DB::table('orders')->select([
    DB::raw('SELECT COUNT(id) AS order_count WHERE type = 2'),
    DB::raw('SELECT SUM(id) AS order_sum WHERE type = 2')
    DB::raw('SELECT COUNT(id) AS member_order_count WHERE type = 3'),
    DB::raw('SELECT SUM(id) AS member_order_sum WHERE type = 3')
])->paginate(20);

因此,我的代码出现了一个错误。

您可以通过删除select方法中的
[]
来检查它。这是您的完整数据库查询吗?和
count
SUM
将仅作为
订单
表格?请查看我的答案,谢谢!