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

像这样的MySQL查询:


SELECT

  GROUP_CONCAT(DISTINCT

    CONCAT(

      'ifnull(SUM(case when location_code = ''',

      location_code ,

      ''' then quantity end),0) AS `',

      location_code , '`'

    )

  ) INTO @sql

FROM

  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?


qq_笑_17
浏览 370回答 3
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();

森栏

这似乎是重复的(如何从mysql中的表创建选择动态字段?)。您在另一个线程上请求并获得了帮助,但是在这里询问如何实际实现他们在那里给出的答案。(我可能会补充说,在询问方面相当好斗。)通常最好是要求对所得到的代码进行澄清,以作为给出问题的答案。
打开App,查看更多内容
随时随地看视频慕课网APP