当前位置: 首页 > 面试题库 >

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

凤伟泽
2023-03-14
问题内容

像这样的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,但我很困惑。因为存在很多陈述。存在PREPAREEXECUTESETDEALLOCATE等你可以看到上面的查询

如何将其转换为雄辩的laravel?


问题答案:

主要是原始查询:

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


 类似资料:
  • 问题内容: 我的代码在这里检测the 是否等于某种MIME类型,如果是,它将进行一定的转换 我缩短了代码,因为它包含许多其他if语句,哪种设计模式适合于删除许多if and else or else if语句? 问题答案: 你可以有一个接口。然后,你可以为每个Mimetype创建一个类,如下所示: 每个转换器都需要一个这样的类。然后,你可以像这样设置地图: 然后,你的convertToMp3方法将

  • 我是java编程新手,很难弄清楚这一点。 这是我的代码: 有没有办法将其转换为switch-case语句?

  • 这里我的代码检测< code>mimeType是否等于某个MIME类型,如果是,它将进行某种转换 我把代码缩短了,因为它有很多else if语句,什么设计模式适合去掉很多if和else或者else if语句?

  • 我有一个完全完成的项目,由Laravel后端和反应前端组成。反应应用程序包装在Laravel代码中,只有在登录和一些选择后才可用,这些都是在laravel中完成的,并带有它的视图。我想把反应应用程序做成一个独立的应用程序,并把laravel代码做成一个api,从服务器通过。一个url,这样反应应用程序将通过向laravel api发出请求来工作。 所以我的第一个问题是:有没有一种方法可以在我的la

  • 我继承了一个需要进一步开发的web系统。该系统似乎是由阅读了PHP教程两章的人创建的,他认为自己可以编写代码。。。 所以网页本身是UTF8格式的,显示并输入其中的所有内容。数据库表是用UTF8字符集创建的。但是,在配置中,有“SET NAMES LATIN1”。换句话说,UTF8编码的字符串用强制拉丁1编码填充到数据库中。 有没有一种方法可以将这些乱七八糟的东西转换为实际存储在utf8中并摆脱la

  • 我的数据库中有一个表,它看起来像(表中可以有相同的元组): 我必须在as(Branch属性是动态的)后面显示结果: 我希望将此过程转换为单个SQL语句。我试过了,但找不到解决办法。我怎样才能做到这一点呢?谢谢