owowagency/applies-http-query
owowagency/applies-http-query
This package contains a trait that can be used on Eloquent models. The trait adds a httpQuery scope that can apply a "search" and "order by". It will only apply these two when certain url query parameters are present.
Install
composer require owowagency/applies-http-query
This package supports Laravel version 5 to 7. Check the 1.x branch.
Usage
Add the trait to the model:
use OwowAgency\AppliesHttpQuery\AppliesHttpQuery;
class Post extends Model
{
use AppliesHttpQuery
}
Specify the columns on which it can search:
/**
* Http queryable rules.
*
* @var array
*/
protected $httpQueryable = [
'columns' => [
'posts.title'
'users.name',
],
'joins' => [
'users' => ['posts.user_id','users.id'],
'countries' => ['users.country_id', 'countries.id']
],
];
Call the scope:
Post::httpQuery()->paginate();
// Like all other scopes it can be combined with other clauses.
Post::whereNull('deleted_at')->httpQuery()->get();
In order for the scope to work, certain query parameters should be present in the url:
search, the value that will be searched for.order_by, the column that will be ordered on.sort_by, the direction of the ordering. By default this isasc.
Search
https://mysite.com/posts?search=test
Will result in the following query:
SELECT * FROM posts INNER JOIN users ON posts.user_id = users.id WHERE (posts.title LIKE "%test%" OR users.name LIKE "%test%")
Order by
https://mysite.com/posts?order_by=user.name
Will result in the following query:
SELECT * FROM posts INNER JOIN users ON posts.user_id = users.id ORDER BY users.name ASC
https://mysite.com/posts?order_by=user.country.name&sort_by=desc
Will result in the following query:
SELECT * FROM posts INNER JOIN users ON posts.user_id = users.id INNER JOIN countries ON users.country_id = country.id ORDER BY countries.name desc
Related Packages
Powerful PHP database abstraction layer (DBAL) with many features for database s...
Laravel Serializable Closure provides an easy and secure way to serialize closur...
Cli error handling for console/command-line PHP applications.
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| v3.0.0 | ^8.1 | ^10.0 | ||
| v2.0.1 | ^7.3| | ^8.0 | ||
| 2.0.0 | ^7.3 | ^8 | ||
| 1.2.1 | ^7 | ^5| | ||
| 1.2.0 | ^7 | ^5| | ||
| v1.1.2 | ^7.3| | ^8.0 | ||
| v1.1.1 | ^7 | ^5 | ||
| v1.1.0 | ^7 | ^5| | ||
| v1.0.0 | ^7 | ^5 |