Han*_*ink 8 database-design cakephp
我有一个叫做类别的表.该表包含类别及其子(子)类别...
它很简单:
通过这种方式,我可以创建具有无限深度的类别...我有点希望cakephp能够理解parent_id(我也尝试过category_id,但这会使cakePHP自身加入:D)
解决这个问题的正确方法是什么?
注意:还有一个叫"地方"的"多对多"表.这些地方可以属于一个或多个类别.
Ric*_*ome 21
对于这种情况,树行为是过度的.你只需要像这样设置你的模型:
class Category extends AppModel {
public $hasMany = array(
'Children'=>array(
'className'=>'Category',
'foreignKey'=>'parent_id'
)
);
public $belongsTo = array(
'Parent'=>array(
'className'=>'Category',
'foreignKey'=>'parent_id'
)
);
}
Run Code Online (Sandbox Code Playgroud)
现在,当您在Category上执行find()时,您将获得另外两个名为Parent(指向父ID)和Children(列出其子项)的模型.
看看树的行为 ; 使用MPTT逻辑.提供给Oracle网站的链接已经过时; 但你可以在蛋糕手册和网上找到一堆关于如何使用它的资料.
CREATE TABLE categories (
id INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id INTEGER(10) DEFAULT NULL,
lft INTEGER(10) DEFAULT NULL,
rght INTEGER(10) DEFAULT NULL,
name VARCHAR(255) DEFAULT '',
PRIMARY KEY (id)
);
Run Code Online (Sandbox Code Playgroud)
只需确保您的表格与该结构匹配,以便在Cake中烘焙,以获得最佳效果.