将 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 位的主要内容,如果未能解决你的问题,请参考以下文章