【问题标题】:Remove spaces before getting the result in laravel elequent在获得 laravel eloquent 的结果之前删除空格
【发布时间】:2018-02-05 08:35:54
【问题描述】:

我想在 laravel 控制器中比较搜索结果。

当用户输入名称并搜索时。在我的控制器中,它将删除输入空格并比较从数据库中检索到的数据。

提交的用户是 John Doe

preg_match_all('/\@([^\s\.]+)/', $request->name, $matches);

删除空格成为 JohnDoe。然后用

获取数据
$user = User::where('name', $name)->first();

我想在比较结果之前删除名称列空格。例如,从数据库列获取的数据是 John Doe。如何删除空格并进行比较。 $user = User::where('John Doe', $matches)->first();

【问题讨论】:

  • 你的意思是你的数据库表列带有'John Doe'还是'name'列的值之一是'John Doe'?
  • @OmisakinOluwatobi 'name' 列的值之一是 'John Doe'

标签: php laravel


【解决方案1】:

我会说:

  1. 如果您要保存与您真正需要的数据不同的数据,则会出现问题。我的意思是您可以轻松地拯救 JohnDoe 及其轻松,也让生活变得轻松。

  2. 您可以将 Raw sql 查询与whereRaw() 方法一起使用:

    User::whereRaw("REPLACE(`name`, ' ', '') = ? ", $name)->first();
    

REPLACE() 删除所有空格且没有空格。了解更多关于mysql的信息REPLACE()here

【讨论】:

    【解决方案2】:

    尝试使用whereRaw

    $user = User::whereRaw("name REGEXP 'your_regex'")->first();
    

    【讨论】:

      【解决方案3】:

      我发现这种方法可行。

      $user = User::where('name','%'.$name.'%')
                          ->orWhere('name','LIKE','%'.preg_replace('/\@([^\s\.]+)/', '', $name).'%')->first();
      

      【讨论】:

        猜你喜欢
        • 2017-04-22
        • 1970-01-01
        • 2012-09-29
        • 2018-03-31
        • 2018-01-11
        • 2016-10-24
        • 1970-01-01
        • 2020-01-05
        • 2021-10-26
        相关资源
        最近更新 更多