Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将mysql-to-query转换为laravel-query_Php_Mysql_Laravel_Laravel Query Builder - Fatal编程技术网

Php 将mysql-to-query转换为laravel-query

Php 将mysql-to-query转换为laravel-query,php,mysql,laravel,laravel-query-builder,Php,Mysql,Laravel,Laravel Query Builder,您好,我正在尝试将这个mysql查询转换为laravel查询,但仍然没有成功。你能帮我把这个mysql查询转换成laravel查询吗 Mysql查询如下 select *,SUM(pp.starting_balance) as total from (select `aa`.*, GROUP_CONCAT( CONCAT(cc.purchasedescription," (",bb.quantity,")") SEPARATOR " , ") as bundle_item from `com

您好,我正在尝试将这个mysql查询转换为laravel查询,但仍然没有成功。你能帮我把这个mysql查询转换成laravel查询吗

Mysql查询如下

select *,SUM(pp.starting_balance) as total from (select `aa`.*, 
GROUP_CONCAT( CONCAT(cc.purchasedescription," (",bb.quantity,")") SEPARATOR " , ") as bundle_item 
from `composite_inventories` as aa 
left join 
`composite_has_inventories` as bb on `aa`.`id` = `bb`.`composite_inventory_id` 
left join 
`inventories` as cc on `bb`.`inventory_id` = `cc`.`id` 
where 
`aa`.`subscriber_id` = '2'
group by 
`aa`.`id`) as tt left join `composite_has_warehouses` as pp on `tt`.`id` = `pp`.`composite_inventory_id` group by pp.composite_inventory_id
我试图建立如下,但没有工作

$row = DB::table('composite_inventories')->select('composite_inventories.*',
            DB::raw('SUM(composite_has_warehouses.starting_balance) as total')
            DB::raw('GROUP_CONCAT( CONCAT(inventories.purchasedescription," (",composite_has_inventories.quantity,")") SEPARATOR " , ") as bundle_item')
            )
            ->leftJoin('composite_has_inventories', 'composite_inventories.id', '=', 'composite_has_inventories.composite_inventory_id')
            ->leftJoin('inventories', function($join) {
                $join->on('composite_has_inventories.inventory_id', '=', 'inventories.id');
            })

            ->where('composite_inventories.subscriber_id',$subscriber_id)
            ->groupBy('composite_inventories.id')
            ->leftJoin('composite_has_warehouses', 'composite_inventories.id', '=', 'composite_has_warehouses.composite_inventory_id')
            ->get();

您可以使用
DB::select()
方法并将原始查询作为字符串放置:

DB::select("select *,SUM(pp.starting_balance) as total from (select `aa`.*,
DB::raw('GROUP_CONCAT( CONCAT(cc.purchasedescription,' (',bb.quantity,')') SEPARATOR ' , ') as bundle_item ')
from `composite_inventories` as aa 
left join 
`composite_has_inventories` as bb on `aa`.`id` = `bb`.`composite_inventory_id` 
left join 
`inventories` as cc on `bb`.`inventory_id` = `cc`.`id` 
where 
`aa`.`subscriber_id` = '2'
group by 
`aa`.`id`) as tt left join `composite_has_warehouses` as pp on `tt`.`id` = `pp`.`composite_inventory_id` group by pp.composite_inventory_id");

显示您尝试过的代码。您尝试过什么?无论如何,对于这样复杂的查询,使用原始SQL通常比使用Laravel的查询生成器更具可读性。我已经发布了我在拉维试过的问题,你说的不工作到底是什么意思?任何错误或输出不符合预期我无法在我的laravel查询中获得与mysql查询相同的结果。在mysql查询中,它为bundle项返回正确的值,但在laravel查询中,它为bundle项返回错误的值。所以我可以使用原始查询,但我在这个查询中的where条件是动态的。如果设置了status,则我的查询将具有where条件中的status。您可以将其作为where条件,如下所示:如果(“$CONDICTION.”“=某个_值,请将where子句条件放在此处”,1)这将确保如果满足条件,则条件将添加到查询中,否则返回1(true)这不会影响您的查询。如果有帮助,请告诉我