微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel - 如何使用对象数组制作多过滤器?

如何解决Laravel - 如何使用对象数组制作多过滤器?

因此,我正在尝试创建一种方法,在该方法中,我可以接收包含在我的数据库中进行搜索所需的参数的对象数组。 示例:

[{ "field": "name","operator": "=","term": "john" },{ "field": "id","term": "3" }]

我收到了,我现在要做的是: 一个循环,我可以在我的 FIELD 数据库中进行搜索,其中 OPERATOR,TERM

我不知道我是否解释得很好,但我认为应该是这样的:

myForLoop ...
Table::where(FIELD,OPERATOR,TERM)

正确吗?怎么会有这样的方法?我是 Laravel 的菜鸟。

先谢谢大家!

解决方法

你可以这样做

$json='[{ "field": "name","operator": "=","term": "john" },{ "field": "id","term": "3" }]';
$data=json_decode($json);

$result=ModelName::where(function ($query)use($data){

    if(isset($data)&&count($data)){
        foreach ($data as $value){
            $query->where($value->field,$value->operator,$value->term);
        }
    }

})->get();

$json='[{ "field": "name","term": "3" }]';
     
$data=json_decode($json);

$where=[];

if(isset($data)&&count($data)){
    foreach($data as $value){
        $where[]=[$value->field,$value->term];
    }
}
    
$result=ModelName::where(function ($query)use($where){
    
    $query->where($where);
    
})->get();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。