У меня есть компонент livewire, который фильтрует таблицу на основе двух раскрывающихся кнопок. один называется «Экземпляр», а другой - «Работа». Я хотел бы найти способ отфильтровать обе кнопки.
таким образом, или я передаю его для рендеринга задания обновления или экземпляра обновления. Таким образом, работает только одна из двух кнопок. есть ли способ заставить их обоих работать?
в том смысле, что если я использую общедоступную переменную, в которую я передаю результаты запроса через два метода, это не позволяет мне выполнять разбиение на страницы, поскольку я буду управлять ее общедоступной переменной, которая позволяет коллекции
namespace App\Http\Livewire;
use Livewire\WithPagination;
use App\Models\Task;
use Livewire\Component;
class TableTodo extends Component
{
use WithPagination;
public $instance;
public $job;
public $jobs;
// public $tasks;
public $instances;
public function updatinginstance()
{
$this->resetPage();
}
public function mount()
{
$this->instance='';
$this->job='';
// $this->tasks=[];
$this->instances=[];
$this->jobs=[];
}
public function updatedinstance()
{
$in = Task::find($this->instance);
if(!empty($in))
{
$tasks= Task::whereIn('process_status', ['new','processing'])
->where('instance','like', $in->instance)
->orderByRaw('FIELD(process_status, "new", "processing")asc')
->orderBy('created_at', 'asc')
->paginate(50)
;
}
else
{
$tasks= Task::whereIn('process_status', ['new','processing'])
->orderByRaw('FIELD(process_status, "new", "processing")asc')
->orderBy('created_at', 'asc')
->paginate(50)
;
}
return $tasks;
}
public function updatedjob()
{
$in_job = Task::find($this->job);
if(!empty($in_job))
{
$tasks = Task::whereIn('process_status', ['new','processing'])
->where('job', 'like', $in_job->job)
->orderByRaw('FIELD(process_status, "new", "processing")asc')
->orderBy('created_at', 'asc')
->paginate(50);
}
else
{
$tasks = Task::whereIn('process_status', ['new','processing'])
->orderByRaw('FIELD(process_status, "new", "processing")asc')
->orderBy('created_at', 'asc')
->paginate(50);
}
return $tasks;
}
public function render()
{
$this->instances = Task::whereIn('process_status', ['new','processing'])->orderBy('created_at', 'asc')->get();
$this->jobs = Task::whereIn('process_status', ['new','processing'])->orderBy('created_at', 'asc')->get();
$tasks = $this->updatedjob();
$tasks = $this->updatedinstance();
return view('livewire.table-todo',['tasks' => $tasks]);
}
}