Laravel:产品,类别和子类别! (关系船)

时间:2018-07-11 23:17:51

标签: php mysql laravel eloquent

我有问题!我做点什么,但是不起作用,所以我会寻求帮助!所以问题是

我有这张桌子

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

我想在smo调用此网址/category/{category}/{subcategory}时发出 获得该子类别的所有产品!但是,当产品没有子类别只能打开类别时,我的意思是/category/{category}

谢谢大家!

3 个答案:

答案 0 :(得分:0)

这是与数据库有关的经典问题,应使用分层的子/父关系。首先,您的数据库设计不好,只需添加一个根目录类别为PARENT_ID为“ 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/How to create a MySQL hierarchical recursive query 和 请记住,您正在将GUI逻辑与SQL角色混合在一起。如果您想返回单个查询,那么您的表示层将非常难看;-)

,如果您只有2或3个级别,则无需考虑将sub_category和category留在product表中。

答案 1 :(得分:0)

答案 2 :(得分:0)

在这里我可以帮助您!

首先,您只能将一个表用于类别和子类别!

您可以做到这一点:

 |---------------------------------------
 |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来显示您的孩子和类别!希望对您有所帮助! ;)