在Laravel ORM中使用两列

时间:2016-02-11 10:50:50

标签: php laravel orm eloquent laravel-5.2

我的表格中有两列:maxcurrent。我想构建简单的范围

public function scopeNotMax($query)
{
    return $query->where('max', '>', 'current');
}

但是Laravel给了我那个查询:

SELECT * FROM table WHERE `max` > 'current'

我不想要这个结果,我知道我可以在这个地方使用whereRaw()DB::raw()。但我无法找到另一种方式来说"嘿,这是专栏,而不是字符串!'。我可以做吗?或者我必须使用原料?我想避免它。

3 个答案:

答案 0 :(得分:1)

没有别的办法。

在这种情况下,

where()方法将第三个参数(值)添加到绑定并将其传递给PDO库。所以它将被逃脱。

或者您可以将第三个参数作为Closure传递,但是laravel将为您形成一个子选择,这对你没什么帮助。

看起来whereRaw()就是为了这种情境而制作的。

答案 1 :(得分:0)

你试过这个吗? return $query->where('max > current');

答案 2 :(得分:0)

你可以使用 whereRaw():

->whereRaw('table_1.name = table_2.name');

你的例子代码:

->whereRaw('max>current');