1. Go to this page and download the library: Download velitsol/eloquent-filter library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
velitsol / eloquent-filter example snippets
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Auth\Authenticatable;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
class User extends Model implements
AuthenticatableContract,
AuthorizableContract
{
use Authenticatable, Authorizable, CanResetPassword;
use Notifiable;
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
/**
* Get the publisher for this model.
*/
public function publisher()
{
return $this->belongsTo(User::class, 'user_id', 'id');
}
}
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Post;
class PostController extends Controller
{
public function index(Request $request)
{
$query = Post::where('score', $request->input('score'));
if ($request->has('view_count'))
$query->whereBetween('view_count', explode('-',$request->get('view_count')));
if ($request->has('created_at'))
$query->whereBetween('created_at', explode('-',$request->get('created_at')));
// filter relation
if ($request->has('publisher')){
$query->whereHas('publisher', function ($q) use ($request)
{
$publisher = $request->get('publisher');
if(!empty($publisher['age']))
$q->whereBetween('age', explode('-',$publisher['age']));
if(!empty($publisher['type']))
$q->where('type', $publisher['type']);
return $q;
});
}
return $query->get();
}
}
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Post;
class PostController extends Controller
{
public function index(Request $request)
{
return Post::filter()->get();
}
}
use VelitSol\EloquentFilter\Filtrable;
class Post extends Model {
use Filtrable;
}
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Post;
class PostController extends Controller
{
public function index(Request $request)
{
return Post::filter()->get();
}
}