如何在 Laravel 的 DB::Select() 中按变量添加 SQL 查询
Posted
技术标签:
【中文标题】如何在 Laravel 的 DB::Select() 中按变量添加 SQL 查询【英文标题】:How to add SQL query by variable in DB::Select() in Laravel 【发布时间】:2021-02-24 02:21:35 【问题描述】:我有一个DB::select()
查询,我想在其中按变量添加动态 SQL。
这是我正在尝试做的,但它返回 SQL 语法错误。
$restaurantSql = "";
$restaurantIds = [6,43,51];
if ($someOtherVariable)
$restaurantSql = "AND orders.restaurant_ids IN (".implode(",", $restaurantIds).")";
$result = DB::select(
"SELECT *
FROM orders
JOIN restaurants ON orders.restauant_id = restaurants.id
WHERE orders.status = 'complete' :restaurant_sql AND
orders.created_at >= :start_date",
["restaurant_sql" => $restaurantSql, "start_date" => $startDate]
);
start_date
按照 Laravel 的文档工作,但 restaurant_sql
不起作用。知道如何实现这一目标吗?
【问题讨论】:
【参考方案1】:我认为你的问题在这里
$result = DB::select(
"SELECT *
FROM orders
JOIN restaurants ON orders.restauant_id = restaurants.id
WHERE orders.status = 'complete'". $restaurantSql. "AND
orders.created_at >= :start_date",
["restaurant_sql" => $restaurantSql, "start_date" => $startDate]
);
【讨论】:
我不想添加餐厅 id,我想动态添加整个 SQL。 好的,我知道了,我改了代码。请再检查一遍 不知道它可以这样工作。谢谢sm以上是关于如何在 Laravel 的 DB::Select() 中按变量添加 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
有 DB::select() 时如何使用 laravel 关系?
如何在原始 sql WHERE IN [LUMEN/LARAVEL] 中绑定命名参数