将 Json 响应结果限制在 php 中的前 5 位

Posted

技术标签:

【中文标题】将 Json 响应结果限制在 php 中的前 5 位【英文标题】:Limit the Json response results to top 5 in php 【发布时间】:2021-10-13 20:45:30 【问题描述】:

我有一个搜索栏,在搜索时我会得到所有相关产品,我只想显示其中的前 5 个

 public function getProducts()

    if (request()->ajax()) 
        $search_term = request()->input('term', '');
        $location_id = 1;
        $check_qty = request()->input('check_qty', false);
        $price_group_id = request()->input('price_group', null);
        $business_id = request()->session()->get('user.business_id');
        $not_for_selling = request()->get('not_for_selling', null);
        $price_group_id = request()->input('price_group', '');
        $product_types = request()->get('product_types', []);

        $search_fields = request()->get('search_fields', ['name', 'sku']);
        if (in_array('sku', $search_fields)) 
            $search_fields[] = 'sub_sku';
        

        $result = $this->productUtil->filterProduct($business_id, $search_term, $location_id, $not_for_selling, $price_group_id, $product_types, $search_fields, $check_qty);

        return json_encode($result);
    

【问题讨论】:

这能回答你的问题吗? Get the first N elements of an array? 我建议你使用 Laravel 集合而不是简单的数组,并以 Laravel 的方式而不是 json_encode 返回 Json 响应。这将使限制结果变得容易得多。 【参考方案1】:

您可以使用->limit(5)->get() 从查询中仅获取 5 个产品

使用orderBy('column_name', 'desc' or 'asc')对查询结果进行排序

您可以使用 laravel 标准 response json 来发回响应,而不是包装在 json_encode

return response()->json($result)

【讨论】:

返回响应()->json($result)->limit(5)->get(); 怎么称呼兄弟 你能把$this->productUtil->filterProduct的代码给我吗 $result = $this->productUtil->filterProduct($business_id, $sku, null, false, null, [], ['sub_sku'], false, 'exact')->first(); if (!empty($result)) return ['variation_id' => $result->variation_id, 'qty' => $qty, 'success' => true ]; else $error_msg = trans("lang_v1.sku_not_match", ['sku' => $sku]); $this->productUtil->filterProduct($business_id, $sku, null, false, null, [], ['sub_sku'], false, 'exact')->first(); 这不是查询兄弟。在 Eloquent 查询中的 ->get() 函数之前添加 ->limit(5)

以上是关于将 Json 响应结果限制在 php 中的前 5 位的主要内容,如果未能解决你的问题,请参考以下文章

Ajax Json对PHP7和IIS 7的限制

将JSON结果限制在数组中[重复]

将两个查询结果传递到响应中

JSON响应的Angular 5显示结果

如何使用 PHP 将 JSON 字符串数据转换为数组?

如果 JSON 响应结果为 0/11,我如何将用户发送到 servlet 中的 .html 页面