Where 子句和搜索
Where clauses and search
我是 Laravel 和 Livewire 的新手。我的代码有问题,我正在尝试使用 where 子句并在一个查询中进行搜索。我有这样的代码。
这是我的控制器
public function read()
{
return Groom::query()
->search($this->search)
->orderBy($this->sortBy, $this->sortDirection)
->paginate($this->perPage);
}
我模型中的这个
public function scopeSearch($query, $val)
{
return $query
->where('status', '<>', 'selesai')
->leftJoin('pets', 'pets.id', '=', 'grooms.pet_id')
->where('name', 'like', '%' .$val. '%')
->where(function ($query) use ($val) {
$query
->Orwhere('service', 'like', '%'. $val. '%')
->Orwhere('address', 'like', '%' .$val. '%')
->Orwhere('status', 'like', '%' .$val. '%');
});
}
那里没有错误,但我的搜索不起作用
您生成的 SQL 查询是
select * from grooms
left join "pets" on "pets"."id" = "grooms"."pet_id"
where "status" <> 'selesai'
and "name" like ? and (
"service" like ?
or "address" like ?
or "status" like ?
)
order by ...
也许您希望 name
过滤器位于分组位置的内部?尝试
public function scopeSearch($query, $val)
{
return $query
->where('status', '<>', 'selesai')
->leftJoin('pets', 'pets.id', '=', 'grooms.pet_id')
->where(function ($query) use ($val) {
$query
->orWhere('name', 'like', '%' .$val. '%')
->orwhere('service', 'like', '%'. $val. '%')
->orwhere('address', 'like', '%' .$val. '%')
->orwhere('status', 'like', '%' .$val. '%');
});
}
我是 Laravel 和 Livewire 的新手。我的代码有问题,我正在尝试使用 where 子句并在一个查询中进行搜索。我有这样的代码。
这是我的控制器
public function read()
{
return Groom::query()
->search($this->search)
->orderBy($this->sortBy, $this->sortDirection)
->paginate($this->perPage);
}
我模型中的这个
public function scopeSearch($query, $val)
{
return $query
->where('status', '<>', 'selesai')
->leftJoin('pets', 'pets.id', '=', 'grooms.pet_id')
->where('name', 'like', '%' .$val. '%')
->where(function ($query) use ($val) {
$query
->Orwhere('service', 'like', '%'. $val. '%')
->Orwhere('address', 'like', '%' .$val. '%')
->Orwhere('status', 'like', '%' .$val. '%');
});
}
那里没有错误,但我的搜索不起作用
您生成的 SQL 查询是
select * from grooms
left join "pets" on "pets"."id" = "grooms"."pet_id"
where "status" <> 'selesai'
and "name" like ? and (
"service" like ?
or "address" like ?
or "status" like ?
)
order by ...
也许您希望 name
过滤器位于分组位置的内部?尝试
public function scopeSearch($query, $val)
{
return $query
->where('status', '<>', 'selesai')
->leftJoin('pets', 'pets.id', '=', 'grooms.pet_id')
->where(function ($query) use ($val) {
$query
->orWhere('name', 'like', '%' .$val. '%')
->orwhere('service', 'like', '%'. $val. '%')
->orwhere('address', 'like', '%' .$val. '%')
->orwhere('status', 'like', '%' .$val. '%');
});
}