【问题标题】:Laravel cannot use field named 'status'Laravel 不能使用名为“状态”的字段
【发布时间】:2020-06-21 07:38:11
【问题描述】:
$this->model
            ->join('user_credentials', 'upload_conversions.user_id', '=', 'user_credentials.user_id')
            ->select(
                'upload_conversions.id',
                'upload_conversions.status',
                'upload_time',
                'user_credentials.user_id',
                DB::raw('CONCAT(user_credentials.first_name, " ", user_credentials.last_name) as user_name')
            )
            ->where('upload_conversions.status', '!=', 'x')
            ->groupBy('upload_time')
            ->get();

在上面的查询中,我似乎无法在 where 子句中使用 Laravel 雄辩的字段“状态”。

请注意“!=”,字符串包含的内容无关紧要。如果我更改使用任何其他字段的位置,则查询会正常工作。

我似乎找不到任何答案,我不敢相信我是第一个在 where 子句中使用字段名称“状态”的人。

那我做错了什么?

更新: 问题是我没有得到任何错误,但也没有结果。它应该有很多结果。更改 where 中的字段会产生结果..

更新: 这是因为 NULL 值。 SQL 中的 NULL 也不应该是字符串,为什么这不起作用?这是 Laravel 的错误吗?

答案:

->where('upload_conversions.status', '!=', 'test')
->orWhereNull('upload_conversions.status')

真的很难看,但这有效。

【问题讨论】:

  • 您遇到什么样的错误?也请张贴截图。
  • 没有错误,也没有结果,更新了我的问题

标签: laravel eloquent


【解决方案1】:

您应该使用 whereNull 来获得 NULL 结果。

->where('upload_conversions.status', '!=', 'test')
->orWhereNull('upload_conversions.status')

有关 NULL 比较的更多参考,请参阅 this answer

【讨论】:

  • 谢谢,我的代码中已经这样做了。不过,这仍然感觉很糟糕..
  • @bremg 不好是什么原因?
【解决方案2】:
->where('upload_conversions.status', '!=', 'test')
->orWhereNull('upload_conversions.status')

真的很丑,但这行得通。

【讨论】:

  • NULL 使用 = 检查是错误的。
  • 请在您的答案中添加一些解释,以便其他人学习
【解决方案3】:

您应该在 where 子句中使用 '<>' 而不是 '!='

【讨论】:

  • 请在您的答案中添加一些解释,以便其他人学习
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 2020-10-27
相关资源
最近更新 更多