cakephp文档规定以下内容:
You can even create self-associated tables to create parent-child relationships:
class CategoriesTable extends Table
{
public function initialize(array $config)
{
$this->hasMany('SubCategories', [
'className' => 'Categories'
]);
$this->belongsTo('ParentCategories', [
'className' => 'Categories'
]);
}
}
听起来不错,但是上面的代码实际上并没有做任何事情。就像上面的代码看起来应该描述一个自引用的多对多关系,但是如果您采用现有的Table类并将其添加到initialize
函数中,则不会发生任何事情。大概必须有一些未显示的关联模式。
因此,尚不清楚如何actually
建立自引用关系。
我已经尝试过了:
CREATE TABLE `categories` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
CREATE TABLE `categories_categories` (
`parent_id` int(11) NOT NULL,
`child_id` int(11) NOT NULL,
PRIMARY KEY (`parent_id`,`child_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
然后进行烘焙……但是我不清楚如何使它真正与模型一起使用,创建哪些模型,将哪些关联放入模型中以及如何使它们由表单元素表示。