【发布时间】:2020-11-10 20:34:49
【问题描述】:
我有这个 livewire 组件,它根据两个下拉按钮过滤表格。一个称为实例,另一个称为作业。我想找到一种过滤两个按钮的方法。
以这种方式或我将其传递给渲染 updatejob 或 updateinstance。所以只有两个按钮中的一个起作用。有什么方法可以让它们都工作吗?
从某种意义上说,如果我使用一个公共变量,通过这两种方法将查询结果传递给它,它不允许我进行分页,因为我将操作它的公共变量,它允许集合
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]);
}
}
【问题讨论】:
标签: laravel filter dropdown laravel-livewire