如何创建多对多自引用关系cakephp

时间:2019-05-01 00:33:10

标签: cakephp orm associations cakephp-3.x self-reference

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;

然后进行烘焙……但是我不清楚如何使它真正与模型一起使用,创建哪些模型,将哪些关联放入模型中以及如何使它们由表单元素表示。

0 个答案:

没有答案