为了账号安全,请及时绑定邮箱和手机立即绑定

如何查询获取mysql数据库laravel中与特定类别相关的所有产品

如何查询获取mysql数据库laravel中与特定类别相关的所有产品

PHP
小怪兽爱吃肉 2024-01-19 10:02:16
以下是我的类别表:这是产品类别表:这是产品表:我想按特定和单一类别获取产品并在滑块中显示,例如类别为电子的所有产品类别为服装的产品类别可移动的所有产品我很困惑如何通过连接所有表来查询和获取数据。有人可以帮帮我吗?
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

你可以利用口才和关系。在您的 ProductCategory 模型上执行以下操作:


public function product(){

 return $this->belongsTo('App\Product', 'productId')

}

public function category(){

 return $this->belongsTo('App\Category', 'categoryID')

}

然后你可以像这样查询:


ProductCategory::with(['product','category'])->where('categoryId', 191)->get();


查看完整回答
反对 回复 2024-01-19
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

您可以通过在模型中定义关系来实现它,如下所示:


在您的产品模型中定义类别函数


 public function categories() {

    return $this->belongsToMany(Category::class, 'product_categories', 'productId', 'categoryId');

}

类别模型中的相似性定义了产品的关系


public function products() {

    return $this->belongsToMany(Product::class, 'product_categories', 'categoryId', 'productId');

}

在本例中,product_categories 表是一个数据透视表,数据透视表需要遵循一些规则:

  1. 数据透视表应该是两个表的单数名称,在您的情况下它应该是product_category表

  2. 数据透视表命名约定应该按字母顺序排列,在您的情况下它应该是category_product

  3. 无需在 ppivot 表中创建 id 和 timestamps 列

  4. 您实际上不需要为数据透视表创建模型

另外,这不是规则,而是建议,您的表列应该是蛇形大小写,例如category_id

在模型中定义这些函数后,您可以按如下方式访问相关数据:

$product = Product::find(27); //finding product by id

$product->categories;


$category = Category::find(187); //finding category by id 

$category->products;


查看完整回答
反对 回复 2024-01-19
  • 2 回答
  • 0 关注
  • 26 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信