产品,分类和子分类(关系)

h7appiyu  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(388)

我有个问题!我做了一些东西,但没有工作,所以我会请求你的帮助!所以问题是
我有这张table

products:
  name,subcategory_id,category_id,price,description
Categories:
  name,slug,timestamps
SubCategories:
  name,slug,timestamps

我想在smo调用此url时 /category/{category}/{subcategory} 得到所有产品的子类都叫!但当产品没有子类别时,只能打开类别,我的意思是 /category/{category} 谢谢你们!

jfgube3f

jfgube3f1#

我已经照拉斐尔瓦尔达斯说的做了。看看这个我的迁移文件。
https://github.com/avored/framework/blob/master/database/migrations/2017_03_29_000000_avored_framework_schema.php
这是我雄辩的模型:
https://github.com/avored/framework/blob/master/src/models/database/category.php

bd1hkmkf

bd1hkmkf2#

在这里我可以帮你!
首先,您只能对类别和子类别使用一个表!
你可以这样做:

|---------------------------------------
 |id| |parent_id|    |name|       |slug|
 |1 | | (NULL)  | Electronics | electronics
 |2 | | 1       | Phones      | phones

现在我有孩子了 Phones 所以在你的 Category.php 你能做到吗

/**

* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
* /

public function parent() {
    return $this->belongsTo(self::class, 'parent_id');
}

/**
 * @return \Illuminate\Database\Eloquent\Relations\HasMany
 */
public function children() {
    return $this->hasMany(self::class, 'parent_id','id');
}

现在你可以使用foreach来显示你的孩子和类别!希望对您有所帮助!;)

tf7tbtn2

tf7tbtn23#

这是与数据库相关的经典问题,您应该使用分层的子/父关系。一开始你的数据库设计不好,只需添加一个根类别为“0”的列。

CREATE TABLE CATEGORIES ( 
      CATEGORY_ID  NUMBER,
      PARENT_ID    NUMBER,
      NAME         VARCHAR(255), 
      CREATE_TS    TIMESTAMP(0));

然后读这个:http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ &如何创建mysql分层递归查询&请记住,您将gui的逻辑与sql角色混合在一起。如果要在单个查询中返回,那么表示层将非常难看;-)
同时考虑在产品表中只保留category\u id,如果只有2或3个级别,则不需要指向子类别和category。

相关问题