Laravel 8 Livewire 搜索过滤器不适用于第一个 where 子句
Laravel 8 Livewire search filter not working with first where clause
我想要一个 table 来显示每个公司的所有数据,它有一个过滤器搜索输入,问题是当我输入第一个参数时 where('company_id', Auth::user()->company_id)
它出错了并且没有使过滤器搜索工作。
$groups = Group::where('company_id', Auth::user()->company_id)
->orWhere('code', 'like', $filter)
->orWhere('name', 'like', $filter)
->orWhere('description', 'like', $filter)
->orWhereRaw("(CASE WHEN active = 1 THEN 'Active' ELSE 'Inactive' END) LIKE '%$filter%'")
->orderBy($this->column, $this->order)
->paginate($this->size);
这是我对 table 的查询。
我想您希望 company_id
过滤器应用于所有 query
并结合其他 orWhere
条件。另一个 orWhere
应该像这样分组在 query
中:
$groups = Group::where('company_id', Auth::user()->company_id)
->where(function ($query) use ($filter) {
return $query->where('code', 'like', $filter)
->orWhere('name', 'like', $filter)
->orWhere('description', 'like', $filter)
->orWhereRaw("(CASE WHEN active = 1 THEN 'Active' ELSE 'Inactive' END) LIKE '%$filter%'");
})
->orderBy($this->column, $this->order)
->paginate($this->size);
我已经解决了查询,通过添加另一个 where 语句和另一个 orWhere 语法如下。
出于某种原因,上面的语法适用于 Vue,但是当我将 Vue 迁移到 Livewire 时
$groups = Group::where('company_id', Auth::user()->company_id)
->where('code', 'like', $filter)
->orWhere('name', 'like', $filter)
->orWhere('description', 'like', $filter)
->orWhereRaw("(CASE WHEN active = 1 THEN 'Active' ELSE 'Inactive' END) LIKE '%$filter%'")
->orderBy($this->column, $this->order)
->paginate($this->size);
我想要一个 table 来显示每个公司的所有数据,它有一个过滤器搜索输入,问题是当我输入第一个参数时 where('company_id', Auth::user()->company_id)
它出错了并且没有使过滤器搜索工作。
$groups = Group::where('company_id', Auth::user()->company_id)
->orWhere('code', 'like', $filter)
->orWhere('name', 'like', $filter)
->orWhere('description', 'like', $filter)
->orWhereRaw("(CASE WHEN active = 1 THEN 'Active' ELSE 'Inactive' END) LIKE '%$filter%'")
->orderBy($this->column, $this->order)
->paginate($this->size);
这是我对 table 的查询。
我想您希望 company_id
过滤器应用于所有 query
并结合其他 orWhere
条件。另一个 orWhere
应该像这样分组在 query
中:
$groups = Group::where('company_id', Auth::user()->company_id)
->where(function ($query) use ($filter) {
return $query->where('code', 'like', $filter)
->orWhere('name', 'like', $filter)
->orWhere('description', 'like', $filter)
->orWhereRaw("(CASE WHEN active = 1 THEN 'Active' ELSE 'Inactive' END) LIKE '%$filter%'");
})
->orderBy($this->column, $this->order)
->paginate($this->size);
我已经解决了查询,通过添加另一个 where 语句和另一个 orWhere 语法如下。
出于某种原因,上面的语法适用于 Vue,但是当我将 Vue 迁移到 Livewire 时
$groups = Group::where('company_id', Auth::user()->company_id)
->where('code', 'like', $filter)
->orWhere('name', 'like', $filter)
->orWhere('description', 'like', $filter)
->orWhereRaw("(CASE WHEN active = 1 THEN 'Active' ELSE 'Inactive' END) LIKE '%$filter%'")
->orderBy($this->column, $this->order)
->paginate($this->size);