如何比较laravel和postgres中的两个字段

时间:2014-12-16 13:15:05

标签: postgresql laravel

我正在尝试查询postgres db并且每次都会出现SQL错误。 查询是正确的,但为什么它现在有用?

查询

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

错误

  

SQLSTATE [22P02]:整数

的输入语法无效

字段类型都设置为bigint

这很棒。

2 个答案:

答案 0 :(得分:2)

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

whereRaw('calls < maxcalls') 

答案 1 :(得分:2)

@Andrew的回答是完全正确的,除了它不是一个bug而是预期的行为。

以下是一个例子:


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

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

1。名为bar

的列

“当然您想要将列foobar进行比较。这是您的SQL:”

WHERE foo = bar

2。 “bar”

“很明显你想要foo等于”bar“的所有记录。你走了:”

WHERE foo = "bar"

所以Laravel必须做出决定。而且因为一台计算机(至少没有人工智能)不可能知道你是否想要与一个值或另一列进行比较,开发人员认为它应该总是与该值进行比较(可能因为它是需要更多的功能)< / p>

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

whereRaw('calls < maxcalls')