0

使用 Fluent 或 Eloquent 在 MySQL 数据库中搜索模式并替换它的最佳方法是什么?

在 Laravel 论坛中看到您应该能够像这样进行正则表达式选择

// Searching for the word "mypattern"...
Page::where('words', 'regexp', DB::raw('/\bmypattern\b/'))->get();

但是我已经尝试过这种方法,但它似乎没有选择我想要的行。无论如何,实际上不想只是选择-我想实际进行搜索并用 regex 替换

使用 Laravel 提供的选项来执行此操作的最佳方法是什么?

4

2 回答 2

1

我不相信 'regexp' 是Laravel 4 中的有效查询运算符。

似乎 Taylor 实际上已经在 Github 上的issue #838下对此问题发表了评论,他建议使用 whereRaw 而不是 where。

是一个关于 MySQL Regex Replace 的 SO question,它可以帮助您实现这一点。

于 2013-09-19T00:23:35.097 回答
1

您可以使用 MySQL User Defined Function(UDF) 来满足您的要求。请注意,使用 aUDF并不总是兼容的,但可能足以满足您的情况。

UDF 包 mod 将您的正则表达式实现为用户定义的函数,并受正则表达式REGEXP运算符的支持。

查看MySQL 正则表达式函数

另一种选择是转储您的数据并进行查找和替换。

于 2013-09-19T00:46:51.640 回答