在 Laravel ORM 中使用两列
Using two columns in where Laravel ORM
我的 table 中有两列:max
和 current
。我想构建简单的范围
public function scopeNotMax($query)
{
return $query->where('max', '>', 'current');
}
但是 Laravel 给了我那个查询:
SELECT * FROM table WHERE `max` > 'current'
我不想要这个结果,我知道我可以在这个地方使用 whereRaw()
或 DB::raw()
。但我找不到另一种方式来表达“嘿,这是列,不是字符串!”。我可以这样做吗?或者我必须使用 raws?我想避免它。
你尝试过这个吗? return $query->where('max > current');
没有别的办法。
where()
方法在这种情况下将第三个参数(值)添加到绑定并将其传递给 PDO 库。所以会被转义。
或者您可以将闭包作为第三个参数传递,但是 laravel 将为您形成一个子 select,这没有多大帮助。
看来whereRaw()
就是为这种情况而生的
你可以使用 whereRaw():
->whereRaw('table_1.name = table_2.name');
您的示例代码:
->whereRaw('max>current');
我的 table 中有两列:max
和 current
。我想构建简单的范围
public function scopeNotMax($query)
{
return $query->where('max', '>', 'current');
}
但是 Laravel 给了我那个查询:
SELECT * FROM table WHERE `max` > 'current'
我不想要这个结果,我知道我可以在这个地方使用 whereRaw()
或 DB::raw()
。但我找不到另一种方式来表达“嘿,这是列,不是字符串!”。我可以这样做吗?或者我必须使用 raws?我想避免它。
你尝试过这个吗? return $query->where('max > current');
没有别的办法。
where()
方法在这种情况下将第三个参数(值)添加到绑定并将其传递给 PDO 库。所以会被转义。
或者您可以将闭包作为第三个参数传递,但是 laravel 将为您形成一个子 select,这没有多大帮助。
看来whereRaw()
就是为这种情况而生的
你可以使用 whereRaw():
->whereRaw('table_1.name = table_2.name');
您的示例代码:
->whereRaw('max>current');