如何使用 SQL 函数和用户提供的输入创建自定义 Diesel 查询?
Posted
技术标签:
【中文标题】如何使用 SQL 函数和用户提供的输入创建自定义 Diesel 查询?【英文标题】:How do I create a custom Diesel query using SQL functions with user-provided inputs? 【发布时间】:2019-05-04 22:27:18 【问题描述】:我想执行一个使用 PostGIS 包的自定义 SQL 函数的查询。例如,我可以使用 psql 运行后续查询:
SELECT * FROM places
WHERE earth_box(ll_to_earth(40.6333125,-8.659492), 20)
@> ll_to_earth(places.lat, places.lng);
ll_to_earth
和 earth_box
是 PostGIS 函数。如何使用 Diesel 以 lat
和 lng
的值作为输入进行此查询?
我浏览了文档,但无法理解它。
【问题讨论】:
【参考方案1】:这是我最终得到的解决方案:
pub fn get_near(lat: f32, lng: f32, conn: &PgConnection) -> Vec<Places>
diesel::sql_query("SELECT * FROM places WHERE earth_box(ll_to_earth($1,$2), 20) @> ll_to_earth(places.lat, places.lng)")
.bind::<diesel::sql_types::Float, _>(lat)
.bind::<diesel::sql_types::Float, _>(lng)
.load(conn)
.expect("An error has occured")
【讨论】:
【参考方案2】:Searching the Diesel documentation for function
直接导致sql_function
宏:
Diesel 仅提供对极少数 SQL 函数的支持。此宏使您能够添加来自 SQL 标准的其他函数,以及您的应用程序可能具有的任何自定义函数。
【讨论】:
以上是关于如何使用 SQL 函数和用户提供的输入创建自定义 Diesel 查询?的主要内容,如果未能解决你的问题,请参考以下文章