【问题标题】:How to convert column values to lower case and get data?如何将列值转换为小写并获取数据?
【发布时间】:2019-04-25 02:07:51
【问题描述】:

我的表中有用户昵称,不区分大小写。

我尝试使用此查询从表中获取记录,但没有成功:

$user = User::whereIn('LCASE(nickname)', strtolower($nickname));

错误信息:

为 foreach() 提供的参数无效

在不区分大小写的情况下,如何通过昵称获取用户?

【问题讨论】:

  • 你错过了->first(),所以你的代码是$user = User::whereIn('LCASE(nickname)', strtolower($nickname))->first();。或者,如果您想获得收藏,请使用 ->get() 而不是 ->first()
  • 我很累 ->first()->get() 但错误没有改变。 @DestinationN
  • 你试过$user = User::whereIn('LCASE(nickname)', [strtolower($nickname)]);吗? whereIn 需要一个可排列的参数。我建议将其更改为正常的 where 。
  • 对不起,我错过了,你使用 whereIn 而不是 where 就像 @AdrianHernandez-Lopez 回答的那样
  • 当我尝试您的代码并->first() 返回错误消息时:Unknown column 'LCASE(nickname)' in 'where clause' (SQL: select * from users` where LCASE(nickname) in (otabek) limit 1)`

标签: laravel eloquent laravel-5.7


【解决方案1】:

WhereIn 需要一个值数组,在这种情况下,我建议将其更改为 base where (并添加 first 以便您获得第一个值或使用 get 返回所有用户匹配)。

$user = User::where('nickname', 'like', '%' . strtolower($nickname) . '%')->first();

【讨论】:

  • 未找到列:1054 'where 子句'中的未知列 'LCASE(nickname)'(SQL:select * from users where LCASE(nickname) = andreas limit 1)
  • 我已经更新了用like运算符替换LCASE的答案
  • 现在为我更新了工作,谢谢@Adrian Hernandez-Lopez
猜你喜欢
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 2014-10-04
  • 2020-10-14
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多