为了账号安全,请及时绑定邮箱和手机立即绑定

如何将许多语句mysql转换为laravel雄辩?

如何将许多语句mysql转换为laravel雄辩?

PHP
qq_笑_17 2019-12-06 15:38:47
像这样的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 回答

?
子衿沉夜

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();


查看完整回答
反对 回复 2019-12-06
?
森栏

TA贡献1810条经验 获得超5个赞

这似乎是重复的(如何从mysql中的表创建选择动态字段?)。


您在另一个线程上请求并获得了帮助,但是在这里询问如何实际实现他们在那里给出的答案。(我可能会补充说,在询问方面相当好斗。)


通常最好是要求对所得到的代码进行澄清,以作为给出问题的答案。


查看完整回答
反对 回复 2019-12-06
  • 3 回答
  • 0 关注
  • 369 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信