gpt4 book ai didi

php - laravel 在循环中附加 wheres 以执行 AND 过滤

转载 作者:行者123 更新时间:2023-11-28 23:28:37 24 4
gpt4 key购买 nike

我正在尝试使用 $httpParamSerializer(params); 和 Laravel whereIns 为我的 Angular 应用程序和 Laravel 5.1 API 构建我自己的动态过滤。

我的目标是传递一组我要过滤的字段和值,并向下钻取我需要的记录。

我循环遍历 Laravel 中的字段并执行 whereIns,然后将它们分组到一个数组中,删除重复项。不幸的是,这更像是一个 OR 而不是 AND,因为每个 whereIn 都会进行新的搜索以匹配。

前端查询:

        var filters = {
'review[]' : ['no', 'yes'],
'user_id[]' : [1]
};

HTTP 网址:“http://dde-api.localhost/1.0/userquestions?review%5B%5D=no&review%5B%5D=yes&user_id%5B%5D=1

数据库:

enter image description here

拉拉维尔:

    $results = [];
// Loop through each field (`review`, `users`, etc..), then search thru array of params
foreach ($input as $filter_field => $filters_array) {
if ($this->validField($table, $filter_field)) {
$res = DB::table($table)->whereIn($filter_field, $filters_array)->get();
if (!in_array($res, $results)) {
array_push($results, $res);
}

我需要查询作为多个 WHERE 子句(AND,而不是 OR)工作,它循环遍历并附加 where 子句添加到每个 field ($filter_field),然后搜索匹配的字段值。

所以结果应该是用户 1 的所有 yesno 记录。由于用户 1 没有包含 review: yes 的记录,因此它使用来自 user_id: 4 的记录。这很糟糕。

当我遍历多个字段时,如何将多个 WHERE 语句附加到一个查询?

最佳答案

像这样使用你的循环

$dbTbOBJ = \DB::table("table_name")
// Loop through each field (`review`, `users`, etc..), then search thru array of params
foreach ($input as $filter_field => $filters_array) {
$dbTbOBJ->whereIn($filter_field, $filters_array);
}
$results = $dbTbOBJ->get()

关于php - laravel 在循环中附加 wheres 以执行 AND 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38215929/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com