端点

搜索

Laravel Rest Api 公开了专用于前端用户访问数据的搜索端点。

用法

下面简单介绍一下您可以做什么:

// (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 , countexists
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 , restoreforceDelete

回复

作为回复,您将收到过滤后的记录和相关元数据:

{
当前页

:
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{
搜索

:
{
聚合体

:
[{
关系

:

评论

,
类型

:

平均

,
场地

:

星星
}]}}

这里我们获取了与帖子相关的评论的平均星级。

类型可以是下列之一:

  • 分钟
  • 最大限度
  • 平均
  • 数数
  • 存在
为了 existscount 操作时您不能指定字段,因为这些聚合不基于列。

聚合别名

您可以选择使用以下方式为您的聚合定义一个别名 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 采用侦察字段而不是资源详细信息中的字段