在 sql 上搜索名称而不是 ID

searching on name instead of id on sql

我的产品页面中有搜索输入。如果我输入 id,我可以在描述和类别上搜索名称,但是我如何更改它并不实用 sql 所以我可以搜索类别名称而不是 id。

DB 我有产品 |名称,描述,category_id 类别 |身份证号,姓名

    public function scopeFilter($query,array $filters){
    if ($filters['search'] ?? false){
        $query
            ->where('name', 'like', '%' . request('search') . '%')
            ->orWhere('description', 'like', '%' . request('search') . '%')
            ->orWhere('category_id', 'like', '%' . request('search'). '%');
    }
}

由于类别是相关模型搜索关系:

public function scopeFilter($query,array $filters){
    if ($filters['search'] ?? false){
        $query
            ->where('name', 'like', '%' . request('search') . '%')
            ->orWhere('description', 'like', '%' . request('search') . '%')
            ->orWhereHas('category', function ($q) {
               $q->where('name','like', '%' . request('search'). '%'
            });
    }
}

这是假设您已经在模型中定义了关系。

由于类别是关系的相关模型搜索,我建议使用此代码:‌

public function scopeFilter($query,array $filters) {
    if ($filters['search'] ?? false){
        return $query->where('name', 'like', '%' . request('search') . '%')
            ->orWhere('description', 'like', '%' . request('search') . '%')
            ->orWhereHas('category', function ($q) {
                $q->where('name','like', '%' . request('search'). '%');
        });
    }

    return $query;
}