PHP code example of tehekone / laravel-resources

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'),
    ];
}

$resource->filters->selected($request);
$resource->filters->selected($request)->count();

// 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);
shell script
php artisan shine:filter CreatedFilter --date
blade
@foreach ($resource->filters->items as $name => $filter)
    {!! $filter->render() !!}
@endforeach

{{-- Or simple --}}

@foreach ($resource->filters->items as $name => $filter)
    {!! $filter !!}
@endforeach