我有问题!我做点什么,但是不起作用,所以我会寻求帮助!所以问题是
我有这张桌子
products:
name,subcategory_id,category_id,price,description
Categories:
name,slug,timestamps
SubCategories:
name,slug,timestamps
我想在smo调用此网址/category/{category}/{subcategory}
时发出
获得该子类别的所有产品!但是,当产品没有子类别只能打开类别时,我的意思是/category/{category}
谢谢大家!
答案 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)
我已经按照@rafalwardas所说完成了。看看这个我的迁移文件。
这是我的雄辩榜样:
https://github.com/avored/framework/blob/master/src/Models/Database/Category.php
答案 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来显示您的孩子和类别!希望对您有所帮助! ;)