CakePHP3.2:我无法删除依赖关联

fra*_*lbo 2 cakephp-3.x

我应该犯一个大错误,因为我已经做过好几次了,但我真的不明白为什么删除关联只部分有效:

我的实体是这样声明的:

class SitemessagesTable extends Table {

    public function initialize(array $config) {
        $this->table('sitemessages');
        $this->displayField('title');
        $this->addBehavior('Timestamp');

        $this->hasMany('SitemessageTitles', [
            'dependent' => true,
        ]);

    }
}

class SitemessageTitlesTable extends Table {

    public function initialize(array $config) {
        $this->table('sitemessage_titles');
        $this->displayField('title');

        $this->belongsTo('Sitemessages');

        $this->hasOne('SitemessageTexts', [
            'dependent' => true,
        ]);

        $this->hasOne('SitemessageImages', [
            'dependent' => true,
        ]);

    }
}

class SitemessageTextsTable extends Table {

    public function initialize(array $config) {
        $this->table('sitemessage_texts');
        $this->displayField('text');

        $this->belongsTo('SitemessageTitles');

    }
}

class SitemessageImagesTable extends Table {

    public function initialize(array $config) {
        $this->table('sitemessage_images');
        $this->displayField('image');

        $this->belongsTo('SitemessageTitles');

    }
}
Run Code Online (Sandbox Code Playgroud)

所以我尝试删除这样的 Sitemessages 实体:

    $sitemessage = $this->Sitemessages->get($sitemessage_id);

    $this->Sitemessages->delete($sitemessage);
Run Code Online (Sandbox Code Playgroud)

然后Sitemessages和第一级SitemessageTitles实体被删除,但不是第二级SitemessageTexts也不SitemessageImages是。

我不明白,正如医生所说:

删除实体时,也可以删除关联的数据。如果您的 HasOne 和 HasMany 关联配置为从属关系,则删除操作也将“级联”到这些实体。

任何的想法?

问候,

ndm*_*ndm 5

似乎文档对该dependent选项有点不清楚,因为它只会影响第一级关联。如果您想要完全级联删除,您也需要启用该cascadeCallbacks选项。