Laravel - 根据动态参数扩展 Eloquent where 子句
问题描述
我想根据我从 json 对象收集的搜索参数构建一系列雄辩的 WHERE 子句.
I would like to construct a series of eloquent WHERE clauses dependent on the search parameters I collect from a json object.
像这样的东西(不管对象的语法,,,它是一种解释,只是为了演示):
Something like this (never mind the syntax of object,,, it is an interpretation only to demonstrate):
然后我取对象并解码以获得搜索数组...
I then take the object and decode to get a search array...
如果我的权重和大小设置为 null 或者是一个空字符串",我会有像这样的雄辩代码..
If my weight and size are set to null or are an 'empty string' I would have eloquent code that looks like this..
如果它们有一个值,那么雄辩的代码看起来像这样..
If they have a value then eloquent code would look like this..
有没有办法动态地实现这一点.
Is there a way to accomplish this dynamically.
我想问题应该在于有没有办法根据给定的参数动态链接雄辩的 where 子句?
I suppose the question should be ins there a way to chain eloquent where clauses dynamically based on a given parameter?
在伪上下文中,我希望做这样的事情
In a pseudo context I am looking to do something like this
是否可以以类似于此的方式创建 where 子句的链接?
Can chaining of where clauses be created in some way similar to this?
感谢您花时间看这个!
更新:
我也想出了类似这样的东西,似乎效果很好,但如果改进是个好主意,我欢迎提出建议.
I also came up with something like this that seems to work well but i would like to welcome suggestions if improvement is a good idea.
<小时>
最终版
感谢下面的@lukasgeiter,我想我会选择这个
And thanks to @lukasgeiter below I think I will go with this
推荐答案
这很简单.Laravel 的 where
函数允许你传入一个键值对数组.
That's easy. Laravel's where
function allows you to pass in an array of key value pairs.
如果你好奇,那是源代码的相关部分 (IlluminateDatabaseQueryBuilder
)
If you are curious, that's the relevant part of the source (IlluminateDatabaseQueryBuilder
)
编辑
要对其进行更多控制(例如,将="更改为另一个比较运算符),请尝试直接使用 Laravel 内部使用的代码:
Edit
To have more control over it (e.g. changing the "=" to another comparison operator) try using the code laravel uses internally directly:
这篇关于Laravel - 根据动态参数扩展 Eloquent where 子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!