【发布时间】:2020-08-12 23:04:25
【问题描述】:
我在 Laravel 中有这段代码:
DB::table('items')
->whereRaw("? = 1", ['active'])
->get();
在我的数据库表中,我有一个名为 active 的列,我要运行的查询是:
SELECT *
FROM items
WHERE active=1
我的代码失败,因为查询将我的 'active' 参数作为字符串而不是 SQL 语法中的列名传递(这是预期的行为)。
所以,我得到的不是上面的,而是这样的:
SELECT *
FROM items
WHERE "active"=1
知道如何解决这个问题吗?
PS:我尝试了 MySQL 函数 TRIM 但没有成功(也许我没有正确执行)。
【问题讨论】:
-
为什么不使用
DB::table('items')->where('active',1)? -
我希望它是动态的。实际上,
active是monday。我的数据库中的所有天的值都是 1 或 0。所以,我希望能够说“如果今天是星期一并且monday在我的表中为 1,请选择此项目”。以我的方式,我将能够使用例如 Carbon 并获取今天的名称并将其动态传递到我的查询中。 -
为什么不使用
DB::table('items')->where($day,1)? -
@ArthurSamarcos 是的,如果我将
whereRaw方法与where方法链接起来,这将起作用(因为我在whereRaw中有更多的SQL 代码)但我想知道我是否可以这样做它在whereRaw
标签: php mysql laravel laravel-query-builder