首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Atk4 DQL中转义花括号

如何在Atk4 DQL中转义花括号
EN

Stack Overflow用户
提问于 2018-06-07 14:29:09
回答 1查看 71关注 0票数 2

我在Atk4模型中有以下代码:

代码语言:javascript
复制
$sql = 'REPLACE(\'[dnum]\', \'{DD}\', LPAD(DAY([issue_date]), 2, \'0\'))';
$f = $this->addExpression('calc_document_number',
    [$sql, 'type' => 'string', 'read_only' => true]);

上面的代码应该将dnum列中的dnum替换为填充的issue_date列。直接在数据库中搜索/排序原因。

现在看来,SQL的{DD}部分是由Atk4解析/处理的。是否有可能避开花括号,这样Atk4就会忽略它们?

注意:\{DD\}不起作用

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-08 11:19:23

是的你是对的。转义大括号没有在DSQL中实现,而不是在数据中实现。您可以通过直接使用expr()方法并将{DD}作为参数传递(不会再次替换)来解决此问题。

对我来说是这样的:

代码语言:javascript
复制
$expr = $model->expr('REPLACE([dnum], [], LPAD(DAY([issue_date]), 2, \'0\'))',[
    '{DD}',
]);

$f = $model->addExpression('calc_document_number',
    [$expr, 'type' => 'string', 'read_only' => true]);
// here is no need to set type=string and read_only=true because expression field will automatically be readonly and with string type

echo $m->action('select')->getDebugQuery();

还创建了指向未来引用的票证:https://github.com/atk4/dsql/issues/144

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50743824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档