Skip to content

Commit fe94ccb

Browse files
committed
docs
1 parent 741fae2 commit fe94ccb

File tree

1 file changed

+14
-46
lines changed

1 file changed

+14
-46
lines changed

docs/docs/3.0/search/search.md

Lines changed: 14 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,19 @@
11
# Filtering entities
22

3-
Laravel Restify provides configurable and powerful way of filtering over entities.
4-
5-
- Prerequisites
6-
7-
In order to make a model searchable, it should implement the `Binaryk\LaravelRestify\Contracts\RestifySearchable` contract.
8-
After running this command, add the `Binaryk\LaravelRestify\Traits\InteractWithSearch` trait to your model.
9-
This trait will provide a few helper methods to your model which allow you to filter.
10-
11-
:::tip
12-
The searchable feature is available as for the Restify generated endpoints as well as from a custom Controller searching,
13-
`$this->search(Model::class)`
14-
:::
3+
Laravel Restify provides configurable and powerful way of filtering over entities.
154

165
## Search
176

187
If you want search for some specific fields from a model, you have to define these fields in the `$search` static
198
property:
209

2110
```php
22-
use Illuminate\Database\Eloquent\Model;
23-
use Binaryk\LaravelRestify\Traits\InteractWithSearch;
24-
use Binaryk\LaravelRestify\Contracts\RestifySearchable;
25-
26-
class Post extends Model implements RestifySearchable
11+
class PostRepository extends Repository
2712
{
28-
use InteractWithSearch;
29-
3013
public static $search = ['id', 'title'];
3114
```
3215

33-
Now the `Post` entity is searchable by `id` and `title`, so you could use `search` query param for filtering the index
16+
Now `posts` are searchable by `id` and `title`, so you could use `search` query param for filtering the index
3417
request:
3518

3619
```http request
@@ -39,22 +22,18 @@ GET: /restify-api/posts?search="Test title"
3922

4023
## Match
4124

42-
Matching by specific attributes may be useful if you want an exact matching. Model
43-
configuration:
25+
Matching by specific attributes may be useful if you want an exact matching.
4426

45-
```php
46-
use Illuminate\Database\Eloquent\Model;
47-
use Binaryk\LaravelRestify\Traits\InteractWithSearch;
48-
use Binaryk\LaravelRestify\Contracts\RestifySearchable;
27+
Repository configuration:
4928

50-
class Post extends Model implements RestifySearchable
29+
```php
30+
class PostRepository extends Repository
5131
{
52-
use InteractWithSearch;
53-
54-
public static $search = ['id', 'title'];
55-
56-
public static $match = ['id' => 'int', 'title' => 'string'];
57-
32+
public static $match = [
33+
'id' => RestifySearchable::MATCH_INTEGER
34+
'title' => RestifySearchable::MATCH_TEXT,
35+
];
36+
}
5837
```
5938

6039
As we may notice the match configuration is an associative array, defining the attribute name and type mapping.
@@ -79,7 +58,6 @@ or by title:
7958
GET: /restify-api/posts?title="Some title"
8059
```
8160

82-
8361
### Match datetime
8462

8563
The `datetime` filter add behind the scene an `whereDate` query.
@@ -134,24 +112,14 @@ When index query entities, usually we have to sort by specific attributes.
134112
This requires the `$sort` configuration:
135113

136114
```php
137-
use Illuminate\Database\Eloquent\Model;
138-
use Binaryk\LaravelRestify\Traits\InteractWithSearch;
139-
use Binaryk\LaravelRestify\Contracts\RestifySearchable;
140-
141-
class Post extends Model implements RestifySearchable
115+
class PostRepository extends Repository
142116
{
143-
use InteractWithSearch;
144-
145-
public static $search = ['id', 'title'];
146-
147-
public static $match = ['id' => 'int', 'title' => 'string'];
148-
149117
public static $sort = ['id'];
150118
```
151119

152120
Performing request requires the sort query param:
153121

154-
Sorting DESC requires a minus sign before the attribute name:
122+
Sorting DESC requires a minus (`-`) sign before the attribute name:
155123

156124
```http request
157125
GET: /restify-api/posts?sort=-id

0 commit comments

Comments
 (0)