搜索
用法
下面简单介绍一下您可以做什么:
// (POST)api/posts/search{“
搜索
“
:
{“
文本
“
:
{“
价值
“
:
“
我的全文搜索
“},“
作用域
“
:
[{
“
姓名
“
:
“
已删除
“
,
“
参数
“
:
[真的]}],“
过滤器
“
:
[{“
场地
“
:
“
ID
“
,
“
操作员
“
:
“
>
“
,
“
价值
“
:
1
,
“
类型
“
:
“
或者
“},{“
嵌套
“
:
[{
“
场地
“
:
“
用户身份
“
,
“
操作员
“
:
“
<
“
,
“
价值
“
:
2
},{
“
场地
“
:
“
ID
“
,
“
操作员
“
:
“
>
“
,
“
价值
“
:
100
,
“
类型
“
:
“
或者
“
}]}],“
排序
“
:
[{
“
场地
“
:
“
用户身份
“
,
“
方向
“
:
“
描述
“
},{
“
场地
“
:
“
ID
“
,
“
方向
“
:
“
升序
“
}],“
选择
“
:
[{
“
场地
“
:
“
ID
“
}],“
包括
“
:
[{“
关系
“
:
“
帖子
“
,“
过滤器
“
:
[{
“
场地
“
:
“
ID
“
,
“
操作员
“
:
“
在
“
,
“
价值
“
:
[
1
,
3
}],“
限制
“
:
2},{“
关系
“
:
“
用户
“
,“
过滤器
“
:
[{“
场地
“
:
“
语言.pivot.boolean
“
,“
操作员
“
:
“
=
“
,“
价值
“
:
真的}]}],“
聚合体
“
:
[{“
关系
“
:
“
星星
“
,“
类型
“
:
“
最大限度
“
,“
场地
“
:
“
速度
“
,“
别名
“
:
“
approved_max_stars
“
,“
过滤器
“
:
[{
“
场地
“
:
“
得到正式认可的
“
,
“
价值
“
:
真的}]}],“
指示
“
:
[{“
姓名
“
:
“
奇偶数
“
,“
字段
“
:
[{
“
姓名
“
:
“
类型
“
,
“
价值
“
:
“
奇怪的
“
}]}],“
门
“
:
[
“
创造
“
,
“
看法
“
],“
页
“
:
2
,“
限制
“
:
10}}
规格
钥匙 | 类型 | 必需的 | 默认 | 描述 |
---|---|---|---|---|
文本 | ||||
text.value
|
string
|
X | 您要搜索的文本 | |
作用域 | ||||
scopes.name
|
string
|
X | 范围名称 | |
scopes.parameters
|
array
|
与范围相关的参数 | ||
筛选器 | ||||
filters.field
|
string
|
当不嵌套时 | 字段名称 | |
filters.operator
|
string
|
=
|
现场操作员 | |
filters.value
|
mixed
|
当不嵌套时 | 您要过滤的值 | |
filters.type
|
string
|
and
|
过滤条件类型 | |
filters.nested
|
array
|
嵌套参数 | ||
排序 | ||||
sorts.field
|
string
|
X | 字段名称 | |
sorts.direction
|
string
|
asc
|
结果排序的方向 | |
选择 | ||||
selects.field
|
string
|
X | 字段名称 | |
包括 | ||||
includes.relation
|
string
|
X | 您正在查询的关系 | |
includes.other
|
mixed
|
50
|
您可以指定当前页面中的所有参数,例如
filters
,
limit
,
scopes
等,除了包括
|
|
聚合 | ||||
aggregates.relation
|
string
|
X | 您正在查询的关系 | |
aggregates.type
|
string
|
X |
您想要使用的聚合类型:
min
,
max
,
avg
,
sum
,
count
和
exists
|
|
aggregates.field
|
string
|
当类型不是
exists
或者
count
|
*
|
您想要执行聚合的字段 |
aggregates.alias
|
string
|
为聚合指定的别名 | ||
aggregates.filters
|
array
|
您可以指定
filters
部分
|
||
指示 | ||||
instructions.name
|
string
|
X |
指令
uriKey
|
|
instructions.fields
|
array
|
指令提供的字段。使用指令列表查看可以提供哪些字段。 | ||
分页 | ||||
page
|
number
|
1 | 实际页面 | |
limit
|
number
|
50 | 最大结果数 | |
盖茨 | ||||
gates
|
array
|
您想要进入的大门:
create
,
view
,
update
,
delete
,
restore
和
forceDelete
|
回复
作为回复,您将收到过滤后的记录和相关元数据:
{“
当前页
“
:
1
,“
数据
“
:
[{“
ID
“
:
1
,“
姓名
“
:
“
卢·韦斯特
“
,“
门
“
:
{“
授权查看
“
:
真的,“
授权更新
“
:
真的,“
授权删除
“
:
真的,“
授权恢复
“
:
真的,“
授权强制删除
“
:
真的}},{“
ID
“
:
2
,“
姓名
“
:
“
布里奇特·怀尔德曼
“
,“
门
“
:
{“
授权查看
“
:
真的,“
授权更新
“
:
真的,“
授权删除
“
:
真的,“
授权恢复
“
:
真的,“
授权强制删除
“
:
真的}}],“
从
“
:
1
,“
最后一页
“
:
1
,“
每页
“
:
50
,“
到
“
:
2
,“
全部的
“
:
2
,“
元
“
:
{“
门
“
:
{“
授权创建
“
:
真的}}}
作用域
范围对应于 Laravel 的范围 . 你需要 在您的资源中指定它们 首先允许使用它们。
使用方法如下:
// (POST)api/posts/search{“
搜索
“
:
{“
作用域
“
:
[{
“
姓名
“
:
“
已删除
“
,
“
参数
“
:
[真的]}]}}
筛选器
Laravel Rest Api 中的过滤器是根据指定字段指定要检索的数据的方法。 此处指定的所有字段都必须在 资源的字段方法 第一的。
使用方法如下:
// (POST)api/posts/search{“
搜索
“
:
{“
过滤器
“
:
[{“
场地
“
:
“
ID
“
,
“
操作员
“
:
“
>
“
,
“
价值
“
:
1}]}}
字段是您想要与之交互的列。
操作员必须是下列之一:
- =
- !=
- >
- >=
- <
- <=
- 喜欢
- 不喜欢
- 在
- 不在
远场
您可以通过指定关系来指定与关系相关的字段:
// (POST)api/posts/search{“
搜索
“
:
{“
过滤器
“
:
[{“
场地
“
:
“
语言标签
“
,“
操作员
“
:
“
=
“
,“
价值
“
:
“
法国
“}]}}
类型
在许多情况下,您希望使用“OR”运算而不是“AND”运算来调节多个过滤器。
您可以通过指定过滤器的类型来实现这一点:
// (POST)api/posts/search{“
搜索
“
:
{“
过滤器
“
:
[{
“
场地
“
:
“
用户身份
“
,
“
操作员
“
:
“
<
“
,
“
价值
“
:
2
},{
“
场地
“
:
“
ID
“
,
“
操作员
“
:
“
>
“
,
“
价值
“
:
100
,
“
类型
“
:
“
或者
“
}]}}
这里查询将查看用户相关 ID 是否小于 2 或者帖子的 ID 是否大于 100。
枢轴过滤
当你处理具有枢轴的关系时,例如
BelongsToMany
关系,您可能想要在数据透视表中进行过滤。
您可以通过以下方式实现此目的:
// (POST)api/posts/search{“
搜索
“
:
{“
过滤器
“
:
[{“
场地
“
:
“
语言.pivot.boolean
“
,“
操作员
“
:
“
=
“
,“
价值
“
:
真的}]}}
嵌套过滤
您可能希望根据过滤器类型对条件进行优先排序,因为“AND”运算利用了“OR”运算的优势。
您可以通过以下方式实现此目的:
// (POST)api/posts/search{“
搜索
“
:
{“
过滤器
“
:
[{“
场地
“
:
“
ID
“
,
“
操作员
“
:
“
=
“
,
“
价值
“
:
159
,
“
类型
“
:
“
或者
“},{“
场地
“
:
“
姓名
“
,
“
操作员
“
:
“
喜欢
“
,
“
价值
“
:
“
%超级帖子%
“
,
“
类型
“
:
“
或者
“},{“
嵌套
“
:
[{
“
场地
“
:
“
用户身份
“
,
“
操作员
“
:
“
<
“
,
“
价值
“
:
2
},{
“
场地
“
:
“
ID
“
,
“
操作员
“
:
“
>
“
,
“
价值
“
:
100
,
“
类型
“
:
“
或者
“
}]}]}}
在这里,Laravel Rest Api 将查看帖子的 id 是否为 159 或名称是否类似“%super post%”或(用户 id 小于 2 且帖子的 id 大于 100)
排序
排序允许您指定对结果进行排序的顺序。
此处指定的所有字段都必须在 资源的字段方法 第一的。
// (POST)api/posts/search{“
搜索
“
:
{“
排序
“
:
[{
“
场地
“
:
“
用户身份
“
,
“
方向
“
:
“
描述
“
},{
“
场地
“
:
“
ID
“
,
“
方向
“
:
“
升序
“
}]}}
默认排序
默认情况下,Laravel Rest Api 提供基于以下项的默认排序:
id
降序排列。如果您想更改此设置,请参阅
配置
选择
在某些情况下,您可能希望指定要选择的列,因为这样可以使您的 API 更快地查询不必要的数据。
默认情况下,Laravel Rest Api 将查询您的所有
fields
。您无法查询不存在的列
fields
方法。
您可以通过以下方式实现此目的:
// (POST)api/posts/search{“
搜索
“
:
{“
选择
“
:
[{
“
场地
“
:
“
ID
“
},{
“
场地
“
:
“
标题
“
}]}}
包括
为了限制对 API 的查询数量,Laravel Rest Api 允许您通过单个端点查询远距离关系。
您可以通过以下方式实现此目的:
// (POST)api/posts/search{“
搜索
“
:
{“
包括
“
:
[{“
关系
“
:
“
帖子
“}]}}
更强大的包括
为了使包含操作更加强大,Laravel Rest Api 允许在此页面指定除以下之外的每个参数
include
以避免警告。
这使您可以执行以下操作:
// (POST)api/posts/search{“
搜索
“
:
{“
包括
“
:
[{“
关系
“
:
“
帖子
“
,“
过滤器
“
:
[{
“
场地
“
:
“
ID
“
,
“
操作员
“
:
“
在
“
,
“
价值
“
:
[
1
,
3
}],“
限制
“
:
2}]}}
聚合
如果你不知道什么是聚合,请查看 Laravel 文档 第一的。
Laravel Rest Api 支持所有 Laravel 的聚合,下面快速了解如何指定聚合:
// (POST)api/posts/search{“
搜索
“
:
{“
聚合体
“
:
[{“
关系
“
:
“
评论
“
,“
类型
“
:
“
平均
“
,“
场地
“
:
“
星星
“}]}}
这里我们获取了与帖子相关的评论的平均星级。
类型可以是下列之一:
- 分钟
- 最大限度
- 平均
- 和
- 数数
- 存在
exists
和
count
操作时您不能指定字段,因为这些聚合不基于列。
聚合别名
您可以选择使用以下方式为您的聚合定义一个别名
alias
方法。这允许您自定义响应中的聚合列的名称,而不是依赖于 Laravel 的默认命名。
// (POST)api/posts/search{“
搜索
“
:
{“
聚合体
“
:
[{“
关系
“
:
“
评论
“
,“
类型
“
:
“
平均
“
,“
场地
“
:
“
星星
“
,“
别名
“
:
“
平均星级
“}]}}
聚合过滤
对于更复杂的聚合,Laravel Rest Api 允许你指定过滤器。这些过滤器与 基本的 。
// (POST)api/posts/search{“
搜索
“
:
{“
聚合体
“
:
[{“
关系
“
:
“
评论
“
,“
类型
“
:
“
平均
“
,“
场地
“
:
“
星星
“
,“
过滤器
“
:
[{
“
场地
“
:
“
得到正式认可的
“
,
“
价值
“
:
真的}]}]}}
指示
指令是 API 构建器定义强查询操作的一种方式。它们将在 资源详情 当暴露时。
指定指令的方法如下:
// (POST)api/posts/search{“
搜索
“
:
{“
指示
“
:
[{“
姓名
“
:
“
奇偶数
“}]}}
这里我们获取了具有偶数 ID 的帖子。
指定的名称是
uriKey
的指令。
说明字段
对于更复杂的指令,Laravel Rest Api 允许您指定字段。您可以在 资源详情 。
// (POST)api/posts/search{“
搜索
“
:
{“
指示
“
:
[{“
姓名
“
:
“
奇偶数
“
,“
字段
“
:
[{
“
场地
“
:
“
类型
“
,
“
价值
“
:
“
奇怪的
“
}]}]}}
分页
您可能想要限制查询的数据或指定一个页面按序列加载数据。 此处指定的所有限制必须在 限制资源的方法 第一的。
您可以通过以下方式实现此目的:
// (POST)api/posts/search{“
搜索
“
:
{“
页
“
:
2
,“
限制
“
:
10}}
盖茨
如果您要检索正在获取的模型的权限,则需要指定要获取的门控。请谨慎使用此功能,否则可能会降低应用程序查询速度。
请注意,需要先启用 Gates 才能将其检索出来。请查看 自动门 如果你需要详细信息。
大门可能是以下之一:
- 创造
- 看法
- 更新
- 删除
- 恢复
- 强制删除
// (POST)api/posts/search{“
搜索
“
:
{“
门
“
:
[
“
创造
“
,
“
看法
“
]}}
文本
如果要指定全文搜索,则需要使用文本参数。首先请确保 激活资源的全文搜索 。
// (POST)api/posts/search{“
搜索
“
:
{“
文本
“
:
{“
价值
“
:
“
我的文本搜索
“}}}
影响
使用全文搜索时,查询会出现一些限制:
钥匙 | 更改 |
---|---|
作用域 | |
scopes.name
|
不允许 |
scopes.parameters
|
不允许 |
筛选器 | |
filters.field
|
采用侦察字段而不是资源详细信息中的字段 |
filters.operator
|
=
/
in
/
not in
|
filters.type
|
不允许 |
filters.nested
|
不允许 |
排序 | |
sorts.field
|
采用侦察字段而不是资源详细信息中的字段 |