LogTable::where('log_message','like','%I am "Asking" a ques%')
有什么办法可以实现吗?
慕斯王
浏览 149回答 2
2回答
杨魅力
log_message最简单但在性能方面相当昂贵的方法是使用 MySQLsREGEXP_REPLACE函数预先删除列中的 HTML :LogTable::whereRaw('regexp_replace(log_message, "<[^>]*>", "") like ?', '%I am "Asking" a ques%')或者,如果您使用的是 MySQL 5.7+,则可以使用上面原始 where 查询中使用的相同 RegEx 将生成的列添加到表中:alter table logs_tableadd column log_message_clean text as ( regexp_replace(log_message, '<[^>]*>', '') );或者如果您想手动设置列的内容(例如在您的代码中更好地控制删除的内容,例如使用strip_tags 或 Purifier),只需添加一个新列并让您的模式在每次自动更新此列更改基列的log_message更改位置:protected static function boot(): void{ self::creating(function (LogTable $model) { $model->log_message_clean = strip_tags($model->log_message); });}