【问题标题】:Regex search and replace on all rows in a table with Laravel 4's Fluent or Eloquent使用 Laravel 4 的 Fluent 或 Eloquent 对表中的所有行进行正则表达式搜索和替换
【发布时间】:2013-09-23 22:15:06
【问题描述】:

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

我已经看到 in the Laravel forums应该能够像这样进行正则表达式选择

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

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

使用 Laravel 提供的选项最好的方法是什么?

【问题讨论】:

    标签: php mysql regex laravel laravel-4


    【解决方案1】:

    我不相信 'regexp' 在 Laravel 4 中是 valid query operator

    看来,Taylor 实际上已经在 Github 上的 issue #838 下针对这个问题发表了评论,并且他建议使用 whereRaw 而不是 where。

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

    【讨论】:

      【解决方案2】:

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

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

      MySQL regular expression functions

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-04
        • 1970-01-01
        • 2021-06-09
        • 1970-01-01
        • 1970-01-01
        • 2014-04-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多