像这样的MySQL查询:SELECT GROUP_CONCAT(DISTINCT CONCAT( 'ifnull(SUM(case when location_code = ''', location_code , ''' then quantity end),0) AS `', location_code , '`' ) ) INTO @sqlFROM item_details;SET @sql = CONCAT('SELECT item_number,SUM(quantity) as "total_quantity", ', @sql, ' FROM item_details GROUP BY item_number');PREPARE stmt FROM @sql;EXECUTE stmt;DEALLOCATE PREPARE stmt;我想将其转换为雄辩的laravel,但我很困惑。因为存在很多陈述。存在PREPARE,EXECUTE,SET,DEALLOCATE等你可以看到上面的查询如何将其转换为雄辩的laravel?
3 回答
![?](http://img1.sycdn.imooc.com/533e4c420001b2e502000200-100-100.jpg)
子衿沉夜
TA贡献1828条经验 获得超3个赞
主要是原始查询:
DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();
DB::statement('SET @sql = CONCAT(...)');
DB::statement('PREPARE stmt FROM @sql');
DB::statement('EXECUTE stmt');
DB::statement('DEALLOCATE PREPARE stmt');
尝试这个:
DB::table('item_details')->selectRaw('GROUP_CONCAT(...) INTO @sql')->get();
$sql = DB::selectOne('select @sql')->{'@sql'};
ItemDetails::select('item_number', DB::raw('SUM(quantity) as total_quantity'))
->selectRaw($sql)
->groupBy('item_number')
->get();
![?](http://img1.sycdn.imooc.com/54584d080001566902200220-100-100.jpg)
森栏
TA贡献1810条经验 获得超5个赞
这似乎是重复的(如何从mysql中的表创建选择动态字段?)。
您在另一个线程上请求并获得了帮助,但是在这里询问如何实际实现他们在那里给出的答案。(我可能会补充说,在询问方面相当好斗。)
通常最好是要求对所得到的代码进行澄清,以作为给出问题的答案。
- 3 回答
- 0 关注
- 384 浏览
添加回答
举报
0/150
提交
取消