Skip to content

Releases: BinarCode/laravel-restify

4.5.4

22 Dec 10:22
dbbeafb
Compare
Choose a tag to compare

Fixed

  • Fixed belongs to nullable relationship.

4.5.3

22 Dec 09:12
d474838
Compare
Choose a tag to compare

Fixed

  • HasMany field fixed resolve method.

4.5.2

21 Dec 15:52
7b85d3b
Compare
Choose a tag to compare

Fixed

  • Fixed bug: get_class() expects parameter 1 to be object, null given

4.5.1

21 Dec 10:12
faf8a37
Compare
Choose a tag to compare

Added

  • Added MorphOne field.

4.5.0

21 Dec 09:28
fe628f5
Compare
Choose a tag to compare

Added

  • Sorting by belongsTo relationship:

Sometimes you may need to sort by a belongsTo relationship. This become a breeze with Restify. Firstly you have to
instruct your sort to use a relationship:

// PostRepository
use Binaryk\LaravelRestify\Fields\BelongsTo;
use Binaryk\LaravelRestify\Filters\SortableFilter;

public static function sorts(): array
{
    return [
        'users.name' => SortableFilter::make()
            ->setColumn('users.name')
            ->usingBelongsTo(
                BelongsTo::make('user', 'user', UserRepository::class),
        )
    ];
}

Make sure that the column is fully qualified (include the table name).

The request could look like:

GET: /api/restify/posts?sort=-users.name

This will return all posts, sorted descending by users name.

4.4.0

18 Dec 11:57
6907c1e
Compare
Choose a tag to compare

Added

  • Support for integer column type for the artisan restify:stub command.

  • Support for managing related entities via Eager fields. For example, if you want to have in relationships an BelongsTo field:

//PostRepository.php

public static function getRelated()
     {
         return [
             'owner' => BelongsTo::make('owner', 'owner', UserRepository::class),
         ];
    }

Then you can get it via related as usual:

/api/restify/posts?related=owner

And the returned object in the relationships will be formatted using UserRepository fields, so you can attach policies and permissions for specific fields in the repository itself.

4.3.0

17 Dec 12:55
609bed8
Compare
Choose a tag to compare

Changed

  • The format of filters related repository will include a new key:
'repository' => {
 'key' => 'posts',
 'url' => 'api/restify/posts',
 'display_key' => 'id',
 'title' => 'Posts'
}

4.2.0

16 Dec 15:04
843e13f
Compare
Choose a tag to compare

Added

Match definition

You can implement a match filter definition, and specify for example related repository:

  public static $match = [
        'title' => 'string',
        'user_id' => MatchFilter::make()
            ->setType('int')
            ->setRelatedRepositoryKey(UserRepository::uriKey()),
];

When you will list this filter (with posts/filters?only=matches), you will get:

  {
      "class": "Binaryk\LaravelRestify\Filters\MatchFilter"
      "key": "matches"
      "type": "string"
      "column": "title"
      "options": []
    },
    {
      "class": "Binaryk\LaravelRestify\Filters\MatchFilter"
      "key": "matches"
      "type": "int"
      "column": "user_id"
      "options": []
      "related_repository_key": "users"
      "related_repository_url": "//users"
    }

4.1.1

12 Dec 15:58
794ee15
Compare
Choose a tag to compare

Changed

  • Changed the method signature of the fromRelation and fromBuildermethods for the repository cast.
    abstract public static function fromBuilder(RestifyRequest $request, Builder $builder, Repository $repository): Collection;

    abstract public static function fromRelation(RestifyRequest $request, Relation $relation, Repository $repository): Collection;

4.1.0

12 Dec 15:32
053fbfc
Compare
Choose a tag to compare

Added

  • Support for using a custom related cast class (aka transformer). You can do so by modifying the restify.casts.related property. The default related cast is Binaryk\LaravelRestify\Repositories\Casts\RelatedCast.

The cast class should extends the Binaryk\LaravelRestify\Repositories\Casts\RepositoryCast abstract class.

Copy the default config to your restify.php configuration:

    'casts' => [
        /*
        |--------------------------------------------------------------------------
        | Casting the related entities format.
        |--------------------------------------------------------------------------
        |
        */
        'related' => \Binaryk\LaravelRestify\Repositories\Casts\RelatedCast::class,
    ],