【问题标题】:Laravel eloquent - order by starting stringLaravel 雄辩 - 按起始字符串排序
【发布时间】:2019-10-01 23:00:19
【问题描述】:

假设我有 3 个用户,然后我想用“罗伯特”的名字进行过滤

“阿尔伯特·罗伯特·威尔逊”、“罗伯特·梅根”、“威廉·乔”

我希望我的 sql 查找包含 Robert 的所有记录,但以 Robert Magan 开头的方式排序,因为它以关键字开头,然后是 Albert Robert Wilso

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

    您应该在问题中提供示例模型/表名称和列名称。但是假设模型是User,列是name。我认为这样的事情会起作用(未经测试):

    User::where('name', 'like', '%Robert%')->orderBy(\DB:raw('POSITION("Robert" IN name)', 'asc')->get();
    

    但请注意不要造成 SQL 注入漏洞!

    【讨论】:

    • Ele me deu um erro de syntax Syntax error or access violation near ') asc, created_at desc limit 20 offset 0'
    • 哦,我解决了 POSITION("Robert" IN name) 编辑你的答案
    【解决方案2】:

    你可以使用一些原始的 mysql 和字符串操作来解决这个问题,以便按第一个单词排序。

    另一种方法是将关键字和剩余的或完整的字符串分成两个单独的列,然后按关键字列排序。

    【讨论】:

      猜你喜欢
      • 2017-04-11
      • 2018-04-05
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多