在 Laravel 中使用标签进行搜索
Posted
技术标签:
【中文标题】在 Laravel 中使用标签进行搜索【英文标题】:Search using Tags in Laravel 【发布时间】:2021-05-23 12:48:15 【问题描述】:我是 Laravel 的新手,并且
试图通过标签建立一个搜索系统,比如我有一个products
表,每个产品在product_tags
表中有多个标签。 product_tags
表有两列 product_id
和 product_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 中使用标签进行搜索的主要内容,如果未能解决你的问题,请参考以下文章