1. Go to this page and download the library: Download tehekone/laravel-resources 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/ */
tehekone / laravel-resources example snippets
namespace App\Filters;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use TehekOne\Laravel\Resources\Filters\Templates\SelectFilter;
/**
* Class UserType
*
* @package App\Filters
*/
class UserType extends SelectFilter
{
/**
* Apply the filter to the given query.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param mixed $value
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function apply(Builder $query, $value)
{
return $query->where('type', $value);
}
/**
* Get the filter's available options.
*
* @param \Illuminate\Http\Request $request
*
* @return array
*/
public function options(Request $request)
{
return [
'admin' => 'Administrator',
'editor' => 'Editor',
];
}
}
namespace App\Filters;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use TehekOne\Laravel\Resources\Filters\Templates\BooleanFilter;
/**
* Class UserType
*
* @package App\Filters
*/
class UserType extends BooleanFilter
{
/**
* Apply the filter to the given query.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param mixed $value
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function apply(Builder $query, $value)
{
return $query->where('is_admin', $value['admin'])
->where('is_editor', $value['editor']);
}
/**
* Get the filter's available options.
*
* @param \Illuminate\Http\Request $request
*
* @return array
*/
public function options(Request $request)
{
return [
'admin' => 'Administrator',
'editor' => 'Editor',
];
}
}
namespace App\Filters;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Builder;
use TehekOne\Laravel\Resources\Filters\Templates\DateFilter;
/**
* Class CreatedFilter
*
* @package App\Filters
*/
class CreatedFilter extends DateFilter
{
/**
* Apply the filter to the given query.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param mixed $value
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function apply(Builder $query, $value)
{
return $query->where('created_at', '<=', Carbon::parse($value));
}
}
/**
* The displayable name of the filter.
*
* @var string
*/
public $name = 'Filter Title';
/**
* Get the displayable name of the filter.
*
* @return string
*/
public function name()
{
return 'Filter By ' . $this->custom;
}
namespace App\Filters;
use Illuminate\Support\Carbon;
use Illuminate\Database\Eloquent\Builder;
use TehekOne\Laravel\Resources\Filters\Templates\DateFilter;
/**
* Class TimestampFilter
*
* @package App\Filters
*/
class TimestampFilter extends DateFilter
{
/**
* The column that should be filtered on.
*
* @var string
*/
protected $column;
/**
* Create a new filter instance.
*
* @param string $column
* @return void
*/
public function __construct($column)
{
$this->column = $column;
}
/**
* Apply the filter to the given query.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param mixed $value
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function apply(Builder $query, $value)
{
return $query->where($this->column, '<=', Carbon::parse($value));
}
/**
* Get the key for the filter.
*
* @return string
*/
public function key()
{
return 'timestamp_'.$this->column;
}
}
/**
* Get the filters available for the resource.
*
* @param Request $request
*
* @return array
*/
public function filters(Request $request)
{
return [
new \App\Filters\TimestampFilter('created_at'),
new \App\Filters\TimestampFilter('updated_at'),
];
}
// Get filter by key
$resource->filters->get($key);
// Set filter by key
$resource->filters->set($key, $value);
// Get all filters
$resource->filters->items;
// Get selected filters
$resource->filters->selected($request);