Easily build Eloquent queries from API requests

Overview

Build Eloquent queries from API requests

Latest Version on Packagist Test Status Code Style Status Total Downloads

This package allows you to filter, sort and include eloquent relations based on a request. The QueryBuilder used in this package extends Laravel's default Eloquent builder. This means all your favorite methods and macros are still available. Query parameter names follow the JSON API specification as closely as possible.

Basic usage

Filter a query based on a request: /users?filter[name]=John:

use Spatie\QueryBuilder\QueryBuilder;

$users = QueryBuilder::for(User::class)
    ->allowedFilters('name')
    ->get();

// all `User`s that contain the string "John" in their name

Read more about filtering features like: partial filters, exact filters, scope filters, custom filters, ignored values, default filter values, ...

Including relations based on a request: /users?include=posts:

$users = QueryBuilder::for(User::class)
    ->allowedIncludes('posts')
    ->get();

// all `User`s with their `posts` loaded

Read more about include features like: including nested relationships, including relationship count, custom includes, ...

Sorting a query based on a request: /users?sort=id:

$users = QueryBuilder::for(User::class)
    ->allowedSorts('id')
    ->get();

// all `User`s sorted by ascending id

Read more about sorting features like: custom sorts, sort direction, ...

Works together nicely with existing queries:

$query = User::where('active', true);

$userQuery = QueryBuilder::for($query) // start from an existing Builder instance
    ->withTrashed() // use your existing scopes
    ->allowedIncludes('posts', 'permissions')
    ->where('score', '>', 42); // chain on any of Laravel's query builder methods

Selecting fields for a query: /users?fields[users]=id,email

$users = QueryBuilder::for(User::class)
    ->allowedFields(['id', 'email'])
    ->get();

// the fetched `User`s will only have their id & email set

Read more about selecting fields.

Support us

We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products.

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall.

Installation

You can install the package via composer:

composer require spatie/laravel-query-builder

Read the installation notes on the docs site: https://spatie.be/docs/laravel-query-builder/v5/installation-setup.

Documentation

You can find the documentation on https://spatie.be/docs/laravel-query-builder/v5.

Find yourself stuck using the package? Found a bug? Do you have general questions or suggestions for improving the media library? Feel free to create an issue on GitHub, we'll try to address it as soon as possible.

If you've found a bug regarding security please mail [email protected] instead of using the issue tracker.

Upgrading

Please see UPGRADING.md for details.

Testing

composer test

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you've found a bug regarding security please mail [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

Comments
  • Sorting by related properties

    Sorting by related properties

    As described in the spec here: http://jsonapi.org/format/#fetching-sorting

    It is recommended that dot-separated (U+002E FULL-STOP, “.”) sort fields be used to request sorting based upon relationship attributes. For example, a sort field of author.name could be used to request that the primary data be sorted based upon the name attribute of the author relationship.

    However this is not possible on an eloquent query builder. Model::with('related')->orderBy('related.name')->get() doesn't work as the related models would be fetched in a second query and the first query doesn't know the related.name field. I'm also not sure what the intended behaviour would be relationships returning multiple models. (Sort the related models first; then sort parent models by first related model?)

    As I see it there a couple different solutions:

    • if there are any sort queries for related properties (containing .) fetch the results first and sort the collection after that. This doesn't work if you're paginating or limiting the query
    • use a select to include the related property on the initial query and then sort – only works for belongsTo and hasOne relationships and feels like a pain to implement

    Any thoughts/insights on this are very welcome!

    opened by AlexVanderbist 25
  • Added ability to have custom sort classes.

    Added ability to have custom sort classes.

    This adds the ability to have custom sort classes. So why would you need or want a custom sort class? Doing so would allow users to sort by related models. Normal usage is the same as before. So if you just want to keep the standard sorting, you just add the sort fields like normal:

    // GET /users?sort=name,-street
    $users = QueryBuilder::for(User::class)
        ->allowedSorts('name', 'street')
        ->get();
    

    So to add a custom sort you would so something like:

    $posts = QueryBuilder::for(Post::class)
        ->allowedSorts('name', Sort::custom('user', UserCustomSort::class))
        ->get();
    

    And a basic custom class would look like:

    use Illuminate\Database\Eloquent\Builder;
    use Spatie\QueryBuilder\Sorts\Sort;
    
    class UserCustomSort implements Sort
    {
        public function __invoke(Builder $query, $descending, string $property) : Builder
        {
            return $query->orderBy('name', $descending ? 'desc' : 'asc');
        }
    }
    
    

    Obviously you wouldn't want just a basic custom sort, but something that would be able to sort the related fields. This can be achieved by doing a sub select or you could do a join.

    use Illuminate\Database\Eloquent\Builder;
    use Spatie\QueryBuilder\Sorts\Sort;
    
    class UserCustomSort implements Sort
    {
        public function __invoke(Builder $query, $descending, string $property) : Builder
        {
            return $query
               ->addSubSelect('user', \App\User::select('name')->whereRaw('posts.user_id = users.id'))
               ->orderBy('name', $descending ? 'desc' : 'asc');
        }
    }
    
    

    While it passes all tests, this more than anything is a proof of concept. I think it could be improved upon. Let me know what you think. Thanks for providing such a great package.

    opened by gcw07 19
  • Add search capabilities

    Add search capabilities

    Enhancement implementation discussed in #172

    It allows the use of search[modifier]=term querystring parameters.

    Full search support includes the following variants:

    url?search=term
    url?search:begins=term
    url?search:ends=term
    url?search:exact=term
    url?search[field]=term
    url?search:begins[field]=term
    url?search:ends[field]=term
    url?search:exact[field]=term
    url?search[field1,field2]=term
    url?search:begins[field1,field2]=term
    url?search:ends[field1,field2]=term
    url?search:exact[field1,field2]=term
    url?search:split=term%20with%20spaces
    url?search:split[field]=term%20with%20spaces
    url?search:split[field1,field2]=term%20with%20spaces
    url?search:split:begins=term%20with%20spaces
    url?search:split:begins[field]=term%20with%20spaces
    url?search:split:begins[field1,field2]=term%20with%20spaces
    url?search:split:ends=term%20with%20spaces
    url?search:split:ends[field]=term%20with%20spaces
    url?search:split:ends[field1,field2]=term%20with%20spacesurl?search=term
    

    Usage

    // The search driver to use is automatically resolved depending on the querystring key syntax.
    
    // Single field
    QueryBuilder::for(Model::class)
        ->allowedSearches('field');
    
    // Multiple fields
    QueryBuilder::for(Model::class)
        ->allowedSearches(['field1', 'field2']);
    
    // Force the search driver for specific fields (otherwise it will be dynamically resolved based on syntax)
    
    // Set exact driver for field regardless of querystring syntax
    QueryBuilder::for(Model::class)
        ->allowedSearches([
            Search::exact('field')
        ]);
    
    opened by axelitus 17
  • Avoid To Include Relations That Are Not Explicitly Requested

    Avoid To Include Relations That Are Not Explicitly Requested

    Problem

    When using allowedIncludes to load the relations together with conditional includes on an eloquent api resource with whenLoaded, it might occur that relations are included that are not explicitly requested, because they have been loaded before or implicitly in an accesor function or whatever.

    How can I make sure that only the relations are included that are actually requested by the include param?

    Some Brainstorming

    First step would be to enable to get the includes that have been parsed from the request from other places than the QueryBuilder itself. I guess it would probably make sense to extend the request object with the logic of parsing the requested includes as opposed to doing this in the QueryBuilder. No matter how it will be done, I am sure it would make sense to make this include parsing / eager loading logic accessible and reusable since it is actually quite elaborate.

    If you enable accessibility it will still be quite tricky to implement the actual conditional includes because of the nested relation includes. As far as I understand you cannot tell from within an eloquent resource at which level of the nesting tree the resource will be included. But you would need that information to check if the path is part of the includes the client sent.

    I'm surprised that apparently no one has ever dealt with this problem before, so I might have overlooked something essential. What do you think?

    opened by MannikJ 15
  • Requested filter(s) `filter` are not allowed

    Requested filter(s) `filter` are not allowed

    Hi, My application with this builder does not work on a production server. on mine domain sub.domain.com/?filter[categories]=some_category I get an error:

    Requested filter(s) "filter" are not allowed. Allowed filter(s) are "start_before, name, location, categories, description, page". but on localhost everything works. the application uses the same database for prod and dev. what's the problem?

    question 
    opened by J4si3k 14
  • Next major release - Features/Requests for v2

    Next major release - Features/Requests for v2

    As there's a couple of breaking changes lined up for v2 of the package we might as well open up discussion about any other breaking changes we'd like to see.

    This is what we've got so far:

    • [x] remove request macros
    • [x] add a couple of useful helpers to QueryBuilderRequest (see #148)
    • [x] allowed sorts need to be explicitly defined
    • [x] allowed fields need to be explicitly defined
    • [x] ~~refactor fields to work the same way as sorts and filters (separate Field class, aliases, etc...)~~
    • [x] allowed includes and requested includes are all converted to camelCase

    Any feedback or new ideas are certainly welcome!

    opened by AlexVanderbist 14
  • Provide possibility to ignore filters on null value

    Provide possibility to ignore filters on null value

    'filter' => [
        'name' => 'John',
        'email' => null,
    ]
    

    Current behavior: searching for models with (partial) name "John" AND an empty email address. Expected behavior: searching for models with (partial) name "John". Email address doesn't matter since it isn't being filtered.

    Or at least some option should be provided to ignore null...

    enhancement 
    opened by Propaganistas 14
  • Possible to have query builder applied with route model binding?

    Possible to have query builder applied with route model binding?

    I'm trying a technique that Freek discussed in his Laracon talk. He mentioned having a Queries folder and injecting them into controllers like this:

    PostController.php

    public function show(\App\Http\Queries\PostQuery $query, $id) {
        $post = $query->findOrFail($id);
        ...
    }
    

    However, Laravel has built-in route model binding like this:

    PostController.php

    public function show(Post $post) {
        // Don't need this anymore, since $post is already bound
        // $post = $query->findOrFail($id);
        ...
    }
    

    The above scenario provides the convenience of not having to grab the post manually. However, it doesn't have any of the query builder features built-in (includes, filters, etc).

    Is there a way to use the route model binding while still having the query builder features applied to the $post that is injected so we can have the includes, filters, etc available on the model?

    opened by docmattman 13
  • Call to undefined method

    Call to undefined method

    Trying to migrate my project to Laravel 9. After upgrading laravel-query-builder to version 5.0.0 I get the error:

    Call to undefined method Spatie\QueryBuilder\QueryBuilder::allowedAppends()
    

    It seems like there is no more appending attributes point for version 5 as well. Why this feature was removed?

    opened by punyflash 12
  • AllowedFields are not taking into consideration the relationship fields

    AllowedFields are not taking into consideration the relationship fields

    Using V4.0.1

    When we do the following:

    QueryBuilder::for(Post::class)
        ->allowedFields('author.id', 'author.name')
        ->allowedIncludes('author');
    

    And query the endpoint like so:

    GET /posts?include=author&fields[author]=id,name
    

    It appears to list all the fields of the author and not just id and name.

    I think the issue lies here ->get($table) where it's grabbing the $table instead of the $relation from the collection of fields.

    opened by PharaohAsh 11
  • Add search filter to query multiple columns/related columns from one filter

    Add search filter to query multiple columns/related columns from one filter

    Basically this:

    QueryBuilder(User::class)
        ->allowedFilters([
            Filter::search('q', ['first_name', 'last_name', 'address.city', 'address.country']),
        ]);
    

    Bonus points for splitting the search query string into multiple parts and searching those as well. E.g. searching for "John Doe Antwerp" should still yield results by splitting the string into "john", "doe" and "antwerp" and searching for these strings independently.

    enhancement 
    opened by AlexVanderbist 11
  • Remove relation name conversion and respect included fields for relations

    Remove relation name conversion and respect included fields for relations

    This PR addresses two issues:

    • automatic snake_case conversion of included relations: #792, #440, #640
    • respecting allowed fields for relationship fields: #681

    I've tried to split them originally but the changes go hand-in-hand which is why I decided against it in the end.

    Including a relation now requires specifying the exact relation name. This should clear up some confusion that arose with the automatic conversion in the past.

    The key and foreign key columns are always queried and included automatically as they are required to associate the loaded models. I don't know if this automatic resolution is something we want to support as I have a feeling that it won't always be possible.

    class TestModel extends Model
    {
        public function relatedModels(): HasMany
        {
            return $this->hasMany(RelatedModel::class);
        }
    }
    
    // Previously
    ->allowedIncludes('relatedModels')
    ->allowedFields('related_models.name')
    
    // Now
    ->allowedIncludes('relatedModels')
    ->allowedFields('relatedModels.name') //  Also automatically includes relatedModels.id
    

    I've added a test case to verify that included fields for relations are respected, but I'm uncertain how the implementation holds up with more complex model setups. As I don't currently use this package in any of my projects, I can't test it extensively.

    Please have a look at it and maybe test the changes. Any feedback or criticism is welcome.

    opened by dominikb 2
Releases(5.1.1)
  • 5.1.1(Dec 2, 2022)

    What's Changed

    • Fix array_diff_assoc BC break in v5.1.0 by @stevebauman in https://github.com/spatie/laravel-query-builder/pull/827

    New Contributors

    • @stevebauman made their first contribution in https://github.com/spatie/laravel-query-builder/pull/827

    Full Changelog: https://github.com/spatie/laravel-query-builder/compare/5.1.0...5.1.1

    Source code(tar.gz)
    Source code(zip)
  • 5.1.0(Nov 28, 2022)

    What's Changed

    • Feature: Update Generics in IncludeInterface by @sidigi in https://github.com/spatie/laravel-query-builder/pull/810
    • Feature: Add PHP 8.2 Support by @patinthehat in https://github.com/spatie/laravel-query-builder/pull/825
    • Feature: Add beginsWithStrict filter by @danilopinotti in https://github.com/spatie/laravel-query-builder/pull/821
    • Bugfix: ignore allowed filters by @davidjr82 in https://github.com/spatie/laravel-query-builder/pull/818
    • Bugfix: Change self to static when creating query builder by @olliescase in https://github.com/spatie/laravel-query-builder/pull/819
    • Docs: Update filtering.md by @Dion213 in https://github.com/spatie/laravel-query-builder/pull/801
    • Misc: Add Dependabot Automation by @patinthehat in https://github.com/spatie/laravel-query-builder/pull/823
    • Misc: Bump actions/checkout from 2 to 3 by @dependabot in https://github.com/spatie/laravel-query-builder/pull/824

    New Contributors

    • @Dion213 made their first contribution in https://github.com/spatie/laravel-query-builder/pull/801
    • @sidigi made their first contribution in https://github.com/spatie/laravel-query-builder/pull/810
    • @patinthehat made their first contribution in https://github.com/spatie/laravel-query-builder/pull/823
    • @dependabot made their first contribution in https://github.com/spatie/laravel-query-builder/pull/824
    • @davidjr82 made their first contribution in https://github.com/spatie/laravel-query-builder/pull/818
    • @olliescase made their first contribution in https://github.com/spatie/laravel-query-builder/pull/819
    • @danilopinotti made their first contribution in https://github.com/spatie/laravel-query-builder/pull/821

    Full Changelog: https://github.com/spatie/laravel-query-builder/compare/5.0.3...5.1.0

    Source code(tar.gz)
    Source code(zip)
  • 4.0.4(Nov 28, 2022)

    What's Changed

    • bugfix: appending to plucked values (that are not a Model) is not possible
    • Add version number to installation command in V4 by @jamesbhatta in https://github.com/spatie/laravel-query-builder/pull/786

    Full Changelog: https://github.com/spatie/laravel-query-builder/compare/4.0.3...4.0.4

    Source code(tar.gz)
    Source code(zip)
  • 3.6.3(Aug 30, 2022)

    What's Changed

    • Add version number to installation command in V3 by @jamesbhatta in https://github.com/spatie/laravel-query-builder/pull/789
    • PHP 8.1 Support by @drecken in https://github.com/spatie/laravel-query-builder/pull/809

    New Contributors

    • @drecken made their first contribution in https://github.com/spatie/laravel-query-builder/pull/809

    Full Changelog: https://github.com/spatie/laravel-query-builder/compare/3.6.2...3.6.3

    Source code(tar.gz)
    Source code(zip)
  • 5.0.3(Jul 29, 2022)

    What's Changed

    • Fixed: Some links in the documentation for v5 pointing to v2 pages by @hameedraha in https://github.com/spatie/laravel-query-builder/pull/757
    • static return type when returning $this by @lorenzolosa in https://github.com/spatie/laravel-query-builder/pull/775
    • [PHP 8.2] Fix ${var} string interpolation deprecation by @Ayesh in https://github.com/spatie/laravel-query-builder/pull/779
    • Fix grammar by @clouder in https://github.com/spatie/laravel-query-builder/pull/784
    • Add Inertia.js Tables for Laravel Query Builder by @fabianpnke in https://github.com/spatie/laravel-query-builder/pull/790
    • Fix Laravel 9 PHPStan generic check for __invoke() method of Filter by @kayw-geek in https://github.com/spatie/laravel-query-builder/pull/781
    • Fix for Warning by @shaunluedeke in https://github.com/spatie/laravel-query-builder/pull/791

    New Contributors

    • @hameedraha made their first contribution in https://github.com/spatie/laravel-query-builder/pull/757
    • @lorenzolosa made their first contribution in https://github.com/spatie/laravel-query-builder/pull/775
    • @Ayesh made their first contribution in https://github.com/spatie/laravel-query-builder/pull/779
    • @clouder made their first contribution in https://github.com/spatie/laravel-query-builder/pull/784
    • @fabianpnke made their first contribution in https://github.com/spatie/laravel-query-builder/pull/790
    • @shaunluedeke made their first contribution in https://github.com/spatie/laravel-query-builder/pull/791

    Full Changelog: https://github.com/spatie/laravel-query-builder/compare/5.0.2...5.0.3

    Source code(tar.gz)
    Source code(zip)
  • 5.0.2(Apr 25, 2022)

    What's Changed

    • Fix Laravel 9 PHPStan generic check by @kayw-geek in https://github.com/spatie/laravel-query-builder/pull/749

    New Contributors

    • @kayw-geek made their first contribution in https://github.com/spatie/laravel-query-builder/pull/749

    Full Changelog: https://github.com/spatie/laravel-query-builder/compare/5.0.1...5.0.2

    Source code(tar.gz)
    Source code(zip)
  • 4.0.3(Mar 23, 2022)

    What's Changed

    • V4 - Add support for laravel > 7.30.4 by @luilliarcec in https://github.com/spatie/laravel-query-builder/pull/744

    New Contributors

    • @luilliarcec made their first contribution in https://github.com/spatie/laravel-query-builder/pull/744

    Full Changelog: https://github.com/spatie/laravel-query-builder/compare/4.0.2...4.0.3

    Source code(tar.gz)
    Source code(zip)
  • 5.0.1(Mar 18, 2022)

    What's Changed

    • Update README.md by @wayz9 in https://github.com/spatie/laravel-query-builder/pull/713
    • Fix release order in CHANGELOG by @medvinator in https://github.com/spatie/laravel-query-builder/pull/717
    • Fix include casing docs by @canvural in https://github.com/spatie/laravel-query-builder/pull/733
    • Adapt documentation for publishing package config by @dominikb in https://github.com/spatie/laravel-query-builder/pull/734
    • Fix warning from passing null to explode for includeParts by @steven-fox in https://github.com/spatie/laravel-query-builder/pull/742

    New Contributors

    • @wayz9 made their first contribution in https://github.com/spatie/laravel-query-builder/pull/713
    • @medvinator made their first contribution in https://github.com/spatie/laravel-query-builder/pull/717
    • @canvural made their first contribution in https://github.com/spatie/laravel-query-builder/pull/733
    • @steven-fox made their first contribution in https://github.com/spatie/laravel-query-builder/pull/742

    Full Changelog: https://github.com/spatie/laravel-query-builder/compare/5.0.0...5.0.1

    Source code(tar.gz)
    Source code(zip)
  • 5.0.0(Jan 13, 2022)

  • 3.6.2(Jan 9, 2022)

    What's Changed

    • [3.0] fix: php 8.1 support by @ankurk91 in https://github.com/spatie/laravel-query-builder/pull/709

    New Contributors

    • @ankurk91 made their first contribution in https://github.com/spatie/laravel-query-builder/pull/709

    Full Changelog: https://github.com/spatie/laravel-query-builder/compare/3.6.1...3.6.2

    Source code(tar.gz)
    Source code(zip)
  • 4.0.2(Dec 26, 2021)

    What's Changed

    • DOC: New sample with multiple default sorts by @williamxsp in https://github.com/spatie/laravel-query-builder/pull/694
    • PHP 8.1 Support by @Medalink in https://github.com/spatie/laravel-query-builder/pull/702

    New Contributors

    • @williamxsp made their first contribution in https://github.com/spatie/laravel-query-builder/pull/694
    • @Medalink made their first contribution in https://github.com/spatie/laravel-query-builder/pull/702

    Full Changelog: https://github.com/spatie/laravel-query-builder/compare/4.0.1...4.0.2

    Source code(tar.gz)
    Source code(zip)
  • 3.6.1(Nov 17, 2021)

    What's Changed

    • Fixed typo preventing the installation of the laravel/framework 7.30.5 security release by @GrahamCampbell in https://github.com/spatie/laravel-query-builder/pull/693

    New Contributors

    • @GrahamCampbell made their first contribution in https://github.com/spatie/laravel-query-builder/pull/693

    Full Changelog: https://github.com/spatie/laravel-query-builder/compare/3.6.0...3.6.1

    Source code(tar.gz)
    Source code(zip)
  • 4.0.1(Oct 27, 2021)

  • 4.0.0(Oct 20, 2021)

    • nested filters will no longer be automatically camel-cased to match a relationship name
    • includes will no longer be automatically camel-cased to match a relationship name
    • fields will no longer be automatically snake-cased to match table or column names

    Take a look at the upgrade guide for a more detailed explanation.

    Source code(tar.gz)
    Source code(zip)
  • 3.6.0(Sep 6, 2021)

  • 3.5.0(Jul 5, 2021)

  • 3.4.3(Jul 5, 2021)

  • 3.4.2(Jul 5, 2021)

  • 1.18.0(Jun 10, 2021)

  • 3.4.1(May 24, 2021)

  • 3.4.0(May 20, 2021)

    • add support for custom includes (#623)
    • add support for getting request data from the request body (#589)
    • fix issues when cloning QueryBuilder (#621)
    Source code(tar.gz)
    Source code(zip)
  • 3.3.4(Nov 26, 2020)

  • 3.3.3(Oct 27, 2020)

  • 3.3.2(Oct 27, 2020)

  • 3.3.1(Oct 11, 2020)

  • 3.3.0(Oct 5, 2020)

  • 3.2.4(Oct 1, 2020)

  • 3.2.3(Sep 30, 2020)

  • 3.2.2(Sep 9, 2020)

  • 3.2.1(Sep 9, 2020)

    • Fix filtering associative arrays (#488)
    • AllowedFilter::filter() takes a Illuminate\Database\Eloquent\Builder instead of a QueryBuilder instance
    Source code(tar.gz)
    Source code(zip)
Owner
Spatie
We create open source, digital products and courses for the developer community
Spatie
⚓️ Easily test HTTP webhooks with this handy tool that displays requests instantly.

Webhook.site With Webhook.site, you instantly get a unique, random URL that you can use to test and debug Webhooks and HTTP requests, as well as to cr

Webhook.site 3.7k Jan 9, 2023
Fly50W is a new language which helps you build simple apps using more than 500k lines of code easily.

Fly50W is a new language which helps you build simple apps using more than 500k lines of code easily. Installation

null 4 Jun 22, 2022
🔍 Generates database queries based on one unique string

?? Laravel Search String Generates database queries based on one unique string using a simple and customizable syntax. Introduction Laravel Search Str

Loris Leiva 735 Dec 30, 2022
A Laravel Wrapper for the Binance API. Now easily connect and consume the Binance Public & Private API in your Laravel apps without any hassle.

This package provides a Laravel Wrapper for the Binance API and allows you to easily communicate with it. Important Note This package is in early deve

Moinuddin S. Khaja 7 Dec 7, 2022
Issue tracking application extending GitHub's issues and pull requests for the Joomla! project.

Requirements The issue tracker application requires a server running: PHP 7.2 or 7.3 PHP's ext/curl and ext/intl should also be installed MySQL 5.5.3

Joomla! 68 Oct 27, 2022
It allows frontend developer to send ajax requests and return a custom information from the server without a php developer help

[Magento 1 Extension] It allows frontend developer to send ajax requests and return a custom information from the server without a php developer help (without any php code).

Vladimir Fishchenko 62 Apr 1, 2022
Issue trackers, feature requests, and translation for all of my NamelessMC products

NamelessMC Products In this repository you can find current issues for each of my NamelessMC products, progress on solving them, feature requests, and

Coldfire 1 Mar 25, 2022
Magento - Attach log correlation ID (aka Trace ID) to requests, monlog entries, and New relic transactions

magento2-log-correlation-id Magento 2 log correlation id for PHP requests/processes and magento logs. This is useful when debugging issues on a produc

Ampersand 13 Dec 15, 2022
An alternative to run cron jobs that uses simple HTTP requests

SilverStripe Simple Jobs An alternative to run cron jobs that uses simple HTTP requests. This module require SilverStripe CronTask. Why? Configuring c

Thomas Portelange 1 Jul 4, 2022
A simple package for idempotent requests in Laravel.

?? Replay A simple package for handling idempotent requests in Laravel. Any routes using the Replay middleware will check for whether an incoming requ

Kieran Marshall 2 Dec 9, 2022
#️⃣ Generate, Save, and Route Stripe-like Hash IDs for Laravel Eloquent Models

Using this package you can generate, save and, route Stripe-like Hash Ids for your Eloquent Models. Hash Ids are short, unique, and non-sequential, an

Yunus Emre Deligöz 88 Dec 27, 2022
Auto-expiring tags with additional payload data on any eloquent model.

Laravel TempTag Auto-expiring tags with additional payload data on any eloquent model. Installation first you need to install and configure mongodb in

masoud nazarpoor 2 Sep 18, 2021
Ratings and reviews for the Laravel's Eloquent models ⭐⭐⭐⭐⭐

Laravel Reviews Ratings and reviews for the Laravel's Eloquent models Users will be able to rate and review the reviewable models. Then these reviews

Mohamed Ali Tavasoli 31 Dec 4, 2022
Personal PHP MySQL query handler based on Eloquent using PDO.

?? Equivoluent Welcome to "Equivoluent" my personal PHP MySQL query handler using PDO. Equivoluent is based on Laravel's Eloquent. The goal of "Equivo

Wob Jelsma 2 Sep 7, 2022
A framework agnostic PHP library to build chat bots

BotMan If you want to learn how to create reusable PHP packages yourself, take a look at my upcoming PHP Package Development video course. About BotMa

BotMan 5.8k Jan 1, 2023
This tool is used to build and maintain browscap files.

Browser Capabilities Project This tool is used to build and maintain browscap files.

Browser Capabilities Project 400 Dec 29, 2022
Parsica - PHP Parser Combinators - The easiest way to build robust parsers.

Parsica The easiest way to build robust parsers in PHP. composer require parsica-php/parsica Documentation & API: parsica-php.github.io <?php $parser

null 350 Dec 27, 2022
Phalcon Builder - is a packaging system that make it easy and quick to build Phalcon packages such as rpms, debs, etc. Phalcon's distribution that hosted at PackageCloud.

Phalcon Builder - is a packaging system that make it easy and quick to build Phalcon packages such as rpms, debs, etc. Phalcon's distribution that hos

The Phalcon PHP Framework 26 Oct 7, 2022
Time registration tool build with Phalcon

PhalconTime Application PhalconTime is a timekeeping tool that helps you track hours spend on clients and projects. Please write me if you have any fe

null 6 Oct 7, 2022