没有不值得去解决的问题,也没有不值得去学习的技术!

Generating SQL With a LIKE Condition Starting With “vtt_” in the Yii 2.0 Query Builder

The final generated SQL statement meets expectations

1. The expected SQL statement to be generated is shown in Figure 1.

The expected SQL statement to be generated
Figure 1
SQL

SELECT * FROM `channel-pub-api`.`cpa_channel_type` WHERE `code` LIKE 'vtt_%'

2. like: The first operand should be a field name or DB expression, and the second operand can be a string or an array, representing the value that the first operand needs to match in a fuzzy query. For example, [‘like’, ‘name’, ‘tester’] will generate name LIKE ‘%tester%’. If the range value is an array, multiple LIKE statements concatenated with AND will be generated. For example, [‘like’, ‘name’, [‘test’, ‘sample’]] will generate name LIKE ‘%test%’ AND name LIKE ‘%sample%’. You can also provide a third optional operand to specify how special characters in the value should be escaped. This operand is an array mapping from the special characters that need to be escaped to their escaped counterparts. If this operand is not provided, the default escape mapping will be used. If you need to disable the escaping feature, simply set the parameter to false or pass an empty array. Note that when using an escape mapping (or when the third operand is not provided), percent signs will be added before and after the value of the second operand. The code is as follows:

PHP

ChannelType::find()
    ->select(ChannelType::tableName() . '.code')
    ->where(['like', 'code', 'vtt_%', false])
    ->asArray()
    ->column();

3. The final generated SQL statement meets expectations, as shown in Figure 2.

The final generated SQL statement meets expectations
Figure 2
SQL

SELECT `cpa_channel_type`.`code` FROM `cpa_channel_type` WHERE `code` LIKE 'vtt_%'

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系