php – Laravel 5.2使用url get参数创建查询以选择字段,匹配字符串和排序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Laravel 5.2使用url get参数创建查询以选择字段,匹配字符串和排序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2277字,纯文字阅读大概需要4分钟。
内容图文
![php – Laravel 5.2使用url get参数创建查询以选择字段,匹配字符串和排序](/upload/InfoBanner/zyjiaocheng/810/24356abfbda04eca85b9c48e3f73a007.jpg)
我看到一些API有简单的查询,可以在url中构建.例如,我有产品型号的产品表.
产品表属性:
> id
> product_name
>条形码
> category_id
>描述
>价格
如何在url中进行查询,如下所示(fields参数表示选择那些指定的字段):
http://example.com/product?fields=id,product_name,price,barcode\u0026amp;sortby=price
或者像这样得到价格等于10.00:
http://example.com/product?fields=id,product_name,price,barcode\u0026amp;price=10.00
我知道在laravel中我们可以使用$request-> has()检查获取参数,并使用$request->输入(‘fieldname)来获取值,以逐个检查和检索值
但我认为应该有更好的方法,或者可能有一个包装函数可以用于所有控制器从url get参数读取查询.
谢谢
解决方法:
好的,我们走了.我会尽力说教.
去做
构建一个API,根据URL参数搜索并返回数据库中的产品.
属性
首先,我们使用所有有效属性设置一个数组.
$props = [
'id',
'product_name',
'barcode',
'category_id',
'description',
'price'
];
参数
让我们将来自URL的所有参数存储在变量中:
$parameters = Input::all();
没有参数
如果传递了任何参数,我们可以选择包含其字段的所有产品并返回结果:
if (empty($parameters)) {
$products = Product::all();
return $products;
}
组织事物
让我们考虑一下我们有3个“类别”的参数:
>这决定了要选择的字段(可选).
>这决定了结果顺序(可选).
>这决定了搜索条款(可选).
识别字段
对于第一个类别,我们将使用fields参数来接收用逗号分隔每个字段的字符串.
$fieldsParam = $parameters['fields']; // Gets fields string.
$fieldsParamSplit = explode(',', $fieldsParam); // Split the fields string into array.
$fields = array_intersect($props, $fieldsParamSplit); // Gets only wanted fields.
命令
对于第二类,我们将使用接收特定字段(属性)名称的sortby参数.
$orderProp = null;
// Check if parameter "sortby" exists and if it is valid.
if (isset($parameters['sortby']) && in_array($parameters['sortby'], $props)) {
$orderProp = $parameters['sortby'];
}
有一些条款?
对于第三类,我们将使用所有参数(上面提到的参数除外)来构建搜索的where子句.
$clauses = [];
foreach ($props as $prop) {
// Check if the current property is present in parameters.
if (in_array($prop, array_keys($parameters))) {
// Each item represents a where clause.
$clauses[$prop] = $parameters[$prop];
}
}
建立集合
现在所有的参数都经过验证,我们可以构建产品集合并返回结果.
if ($orderProp) {
$products = Product::where($clauses)->orderBy($orderProp)->get($fields);
} else {
$products = Product::where($clauses)->get($fields);
}
return $products;
内容总结
以上是互联网集市为您收集整理的php – Laravel 5.2使用url get参数创建查询以选择字段,匹配字符串和排序全部内容,希望文章能够帮你解决php – Laravel 5.2使用url get参数创建查询以选择字段,匹配字符串和排序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。