1. Go to this page and download the library: Download alimousavi/filoquent 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/ */
alimousavi / filoquent example snippets
use AliMousavi\Filoquent\Filterable;
class Post extends Model
{
use Filterable;
}
namespace App\Filters\Blog;
use AliMousavi\Filoquent\Filters\FilterAbstract;
class PostFilter extends FilterAbstract
{
/**
* @var array
*
* An array of fields that can be filtered.
* They key of array is the field being filtered and the value is the type of the field.
*/
protected array $filterables = [
'title' => self::TYPE_STRING,
'author' => self::TYPE_STRING,
];
/**
* @var array
*
* An array of fields that can be searched.
*/
protected array $searchables = [
'title',
'content'
];
/**
* @var array
*
* An array of fields that can be used for ordering.
*/
protected array $orderBy = [
'published_at' => 'desc',
'title'
];
public function title(string $title){
$this->builder->where('title', 'like', "%$title%");
}
public function author(string $author){
$this->builder->whereHas('author', function ($query) use ($author) {
$query->where('name', 'like', "%$author%");
});
}
}
use Illuminate\Http\Request;
use App\Models\Blog\Post;
use Filters\Blog\PostFilter;
use Http\Resources\Blog\PostResource;
class PostController extends Controller
{
public function index(Request $request, PostFilter $filter)
{
$posts = Post::query()->filter($filter)->paginate();
return PostResource::collection($posts);
}
}