1. Go to this page and download the library: Download act-training/query-builder 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/ */
act-training / query-builder example snippets
class User extends Authenticatable
{
use AppliesCriteria;
...
}
namespace App\Http\Livewire;
use ACTTraining\QueryBuilder\QueryBuilder;use ACTTraining\QueryBuilder\Support\Columns\BooleanColumn;use ACTTraining\QueryBuilder\Support\Columns\Column;use ACTTraining\QueryBuilder\Support\Columns\DateColumn;use ACTTraining\QueryBuilder\Support\Conditions\BooleanCondition;use ACTTraining\QueryBuilder\Support\Conditions\DateCondition;use ACTTraining\QueryBuilder\Support\Conditions\TextCondition;use App\Models\Employee;use Illuminate\Database\Eloquent\Builder;
class EmployeesReport extends QueryBuilder
{
public function config(): void
{
$this
->enableQueryBuilder()
->rowClickable(false);
}
public function columns(): array
{
return [
Column::make('Name', 'full_name')
->component('columns.common.title')
->sortable(),
Column::make('Job Title', 'contract.job.name'),
Column::make('Location', 'contract.location.name'),
BooleanColumn::make('Line Manager', 'contract.line_manager')
->hideIf(false)
->justify('center'),
DateColumn::make('Start Date', 'contract.start_date')
->humanDiff()
->justify('right'),
];
}
public function conditions(): array
{
return [
TextCondition::make('Name', 'full_name'),
TextCondition::make('Job Title', 'contract.job.name'),
BooleanCondition::make('Line Manager', 'contract.line_manager'),
TextCondition::make('Location', 'contract.location.name'),
DateCondition::make('Start Date', 'contract.start_date'),
];
}
public function query(): Builder
{
return Employee::query()->with(['contract', 'contract.job', 'contract.location']);
}
public function rowClick($row): void
{
$this->dispatchBrowserEvent('notify', ['content' => 'The row was clicked', 'type' => 'success']);
}
}