在 Laravel 中使用标签进行搜索

Posted

技术标签:

【中文标题】在 Laravel 中使用标签进行搜索【英文标题】:Search using Tags in Laravel 【发布时间】:2021-05-23 12:48:15 【问题描述】:

我是 Laravel 的新手,并且

试图通过标签建立一个搜索系统,比如我有一个products 表,每个产品在product_tags 表中有多个标签。 product_tags 表有两列 product_idproduct_tag

        $search = $req->get('search'); // Input from user 
        
        $products = Product::with(['images', 'tags'])
        ->where('id', 'LIKE' , '%'.$search.'%')
        ->orWhere('product_name', 'LIKE' , '%'.$search.'%')
        ->orWhere('product_price', 'LIKE' , '%'.$search.'%')
        ->get();

        dd($products);

产品模式

class Product extends Model

    use HasFactory;

    public function images()
    
        return $this->hasMany(ProductImage::class, 'product_id', 'id')->orderBy('id', 'desc');
    
    public function tags()
    
        return $this->hasMany(ProductTag::class, 'product_id', 'id')->orderBy('id', 'desc');
    


【问题讨论】:

所以您希望能够搜索产品或标签?您要搜索的“标签”字段的名称是什么? 【参考方案1】:
Product::with(['images', 'tags'])
    ->where(function ($query) use ($search) 
        $query->where('id', 'LIKE' , '%'.$search.'%')
              ->orWhere('product_name', 'LIKE' , '%'.$search.'%')
              ->orWhere('product_price', 'LIKE' , '%'.$search.'%');
    )
    ->orWhereHas('tags', function ($query) use ($search) 
        $query->where('product_tag', 'LIKE', '%'.$search.'%');
    )
    ->get();
Queries: Logical Grouping Eloquent Relationships: Querying Relationship Existence

【讨论】:

以上是关于在 Laravel 中使用标签进行搜索的主要内容,如果未能解决你的问题,请参考以下文章

laraver框架学习------工厂模型填充测试数据

php laravel框架学习笔记 基本工作原理

是否可以使用 API 令牌在 laravel 中进行用户模拟?

Larave中CSRF攻击

larave学习笔记1-安装配置

在没有nodejs的laravel中创建一个实时应用程序