首页 > 解决方案 > laravel where 子句值和列名

问题描述

我如何在 laravel 查询 where 子句中执行这些操作?

select * from table_samples where 1 = id 
// basically i can do like where id = 1

select * from table_samples where 1000 > rate
 // basically i can do like where rate < 1000

select * from table_samples where 'bogart' = name
 // basically i can do like where name = "bogart"

我的观点是,如果你在 mysql 上交换columnvalue它的工作,但如果我在 laravel where 子句中这样做它不起作用?

就像是

TableSample::where('1','id')->first();
TableSample::where('1000','>','rate')->first();
TableSample::where('bogart','name')->first();
// throws an error undefined column name 1, 100, and bogart.

// I know laravel . These are the correct query
TableSample::where('id','1')->first();
TableSample::where('rate','<','1000')->first();
TableSample::where('name','bogart')->first();

laravel 中是否有任何 where 子句函数可以接受或确定您是否尝试互换valueand column

标签: mysqllaravel

解决方案


你燕用DB::raw()这个。

TableSample::whereRaw('? = id', [1])->first();

只需确保使用上述参数替换来防止创建 sql 注入漏洞。

https://laravel.com/docs/5.6/queries#raw-expressions


推荐阅读