【问题标题】:How to Compare two fields in laravel and postgres如何比较 laravel 和 postgres 中的两个字段
【发布时间】:2014-12-17 05:41:32
【问题描述】:

我正在尝试查询 postgres db 并每次都收到 SQL 错误。 查询是正确的,但为什么它现在起作用了?

查询

Apireq::where('calls','<','maxcalls')->get();

错误

SQLSTATE[22P02]:整数的输入语法无效

字段类型都设置为bigint

这很奇怪。

【问题讨论】:

    标签: postgresql laravel


    【解决方案1】:

    您需要使用 whereRaw 而不是仅使用 where。这很奇怪,但它解决了我认为是 Laravel 错误的问题。

    whereRaw('calls < maxcalls') 
    

    【讨论】:

      【解决方案2】:

      @Andrew 的回答是完全正确的,只是它不是错误而是预期的行为。

      下面是一个例子:


      where('foo', '=', 'bar')
      

      现在有两种可能性 Laravel 可以解释(或误解?)这个

      1。名为bar 的列

      “您确定要将列foobar 进行比较。这是您的SQL:”

      WHERE foo = bar
      

      2。 “条”

      “显然你想要foo等于“bar”的所有记录。给你:”

      WHERE foo = "bar"
      

      所以 Laravel 必须做出决定。而且由于计算机(至少没有人工智能)不可能知道您是否要与某个值或另一列进行比较,因此开发人员决定它应该始终与该值进行比较(可能是因为需要更多的功能)

      如您所知,whereRaw 是解决方案:

      whereRaw('calls < maxcalls')
      

      【讨论】:

        猜你喜欢
        • 2011-06-16
        • 2017-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多