mysql - Typo3 LTS9 学说:如何使用 mysql @-Variables?
问题描述
使用mysql @-variables执行以下typo3 SELECT的正确方法是什么:
$dbConnection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($extensionTable);
$queryBuilder = $dbConnection->createQueryBuilder();
$query = $queryBuilder
->select('extensionTable.*',
'@dist:=ACOS(ROUND(SIN(RADIANS(geo.coord_lat)) * SIN(RADIANS(52.5234743092278))
+ COS(RADIANS(geo.coord_lat)) * COS(RADIANS(52.5234743092278))
* COS(RADIANS(geo.coord_lon) - RADIANS(13.4122033308763)),10)) * 6380 AS distance',
'@distgrp:=CASE WHEN @dist <10 THEN 1 WHEN @dist<25 THEN 2 ELSE truncate(((@dist-25)/25)+3, 0) END AS dist_group')
->from('extensionTable LEFT JOIN geoTable AS geo ON geo.zip=extensionTable.zip')
->where('pid IN (15,16)');
它不起作用,typo3 在 @dist var 之前插入了一个 '。不好的结果是:
SELECT 'extensionTable'.*, '@dist:=... ' AS 'distance';
错误:执行时发生异常...您的 SQL 语法有错误;
相关主题(解决方案不适用于 $queryBuilder->select() ): 如何在学说中使用 mysql 变量
我希望有一个人可以帮助我。:-) (或者我必须使用直接的 php mysqli() 查询。)
解决方案
您可以使用selectLiteral
.
$queryBuilder
->select(...)
->addSelectLiteral('@dist:=COS(RADIANS(90))')
推荐阅读
- python - 如何将 ä、ö、ü 等字符从 HTML 编码为 python?
- xaml - 如何在 Xamarin.Forms 中同时长按和短按列表项?
- python - free():Python 中的下一个大小无效
- android - react-native中视图之间的z顺序问题
- java - 如果 Person 是 java 中的类,那么 1)Person p; 有什么区别?&2)Person p = new Person();?
- python - 使用 Pandas Dataframe 转换数据库
- javascript - 如何使用 php 在服务器上保存文本框的值?
- mysql - 如何在使用存储过程时创建具有自动增加的 id 字段?
- javascript - JS Web Worker 是宏任务?
- html - 在自定义 HTML 行中遇到空间故障问题