CakePHP3: Как получить связь в обратном вызове beforeDelete()?

В обратном вызове beforeDelete() мне нужна информация, содержащаяся в связанном, но я не могу найти, как ее получить. Мой обратный вызов ниже в AgpoiaudiosTable.php:

public function beforeDelete($event, $entity, $options) {

    $agpoiaudio = $this->Agpoiaudios->get($entity->id, [
            'contain' => 'Agpois.AgThemes.Sites'
    ]);

    if ($agpoiaudio != null) {
        ...
        return true;
    }

    return false;
}

Но $this->Agpoiaudios->get() заставляет Cake отправить мне следующую ошибку:

Error: Table "App\Model\Table\AgpoiaudiosTable" is not associated with "Agpoiaudio"

Мне действительно нужно загрузить ассоциированный код перед вызовом $this->Agpoiaudios->delete(), чтобы найти его в $entity?


person fralbo    schedule 08.05.2016    source источник


Ответы (1)


Нет, вам не нужно загружать связанные данные перед вызовом Table::delete(), это не то, на что указывает ошибка. На что он действительно указывает, так это на то, что Agpoiaudio не связан с Agpoiaudio, т. е. вы не можете получить доступ к $this->Agpoiaudio в экземпляре Agpoiaudio.

Итак, поскольку вы уже находитесь в экземпляре Agpoiaudio, просто вызовите Table::get() напрямую, т.е.

$agpoiaudio = $this->get($entity->id, [
    'contain' => 'Agpois.AgThemes.Sites'
]);
// ...
person ndm    schedule 09.05.2016