【问题标题】:How to use alias column in whereIn with Laravel?如何在 Laravel 的 whereIn 中使用别名列?
【发布时间】:2020-11-07 05:47:54
【问题描述】:

这是我的代码。我正在尝试获取 A 项的新列表以便循环播放。

 $allowed_a = \App\NewA::select('name')->get()->pluck('name');        
 $a = App\A::selectRaw("replace(unaccent(trim(name)), ' ', '') AS newname, name")
             ->whereIn('newname', $allowed_a)->get();

但我得到未定义的列 'newname'。 请问我该如何解决? 谢谢

【问题讨论】:

  • 我认为 whereIn 无法访问其他查询的数据,因此无法访问您的别名
  • 好的,你有什么诀窍吗?
  • 我试过了,但在一个数组项附近出现错误

标签: laravel laravel-5 eloquent laravel-query-builder


【解决方案1】:

您应该能够使用以下方法实现等效的目标:

$allowed_a = \App\NewA;
\App\A::selectRaw('replace(unaccent(trim(name)) as newname')
      ->whereRaw('replace(unaccent(trim(name)) IN ("'.implode('","', $allowed_a).'")')
      ->get()

【讨论】:

  • 我想我们正在路上。如何用单引号修复名称?他们导致错误
  • @Cutis Yah,我刚刚做了一些tinkering。修改后尝试上述方法。
  • @Cutis 另外,如果您不关心使用替换等接收新名称,我会放弃 selectRaw,以节省您的数据库的一些工作量,只需选择名称。
  • @Cutis 没问题!
  • @Cutis Bahhhhh!对不起,mysql 没有 unaccent,所以我只使用 trim(name) 进行测试。对不起!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2019-11-06
  • 1970-01-01
  • 2014-05-10
  • 1970-01-01
  • 2021-02-10
相关资源
最近更新 更多