Добавить условия для зависимостей в моделях CakePHP? (или зависит от нескольких вещей вместе) - PullRequest
1 голос
/ 23 мая 2011

A User отправляет на сайт Upload (как изображение) Event.

Если ЛИБО Пользователь ИЛИ Событие будет удалено, изображение должно остаться, но если ОБА И Пользователь И Событие будут удалены, Загрузка также должна быть удалена.

Можно ли это сделать, установив CakePHP's dependent в модели? Может ли это зависеть от сочетания обеих вещей? Или - можно ли добавить условия к 'dependent'=>true?

Например:

var User = array(
    'Upload' => array(
        'dependent' => true,
        //can I set a condition here? Or pass array w/ conditions to line above?
    ),
);

Я довольно новичок в Cake, поэтому, если я пропустил лодку - то есть, если есть другой лучший способ сделать это, не стесняйтесь, дайте мне знать.

Пока я думал только о том, чтобы он НЕ зависел, и сам выполнял запрос на удаление со всеми необходимыми условиями - но надеялся, что в CakePHP будет что-то подобное.

Ответы [ 2 ]

2 голосов
/ 24 мая 2011

, вероятно, было бы лучше сделать небольшую проверку в afterDelete (), например:

User::afterDelete(){
// if !$this->Event->find(...conditions...); delete the image
}

Event::afterDelete(){
// if !$this->User->find(...conditions...); delete the image
}

, вы также можете использовать beforeDelete () с проверкой аналогичным образом, и есливстречаются, устанавливаются как «зависимые» динамически через отношения

, невозможно установить условия для опции «зависимый» в параметрах

0 голосов
/ 24 мая 2011

При вызове метода удаления в вашей модели установите для второго параметра значение true.

Используйте методы BeforeDelete / AfterDelete в вашей модели вместе с http://book.cakephp.org/view/1036/delete

delete(int $id = null, boolean $cascade = true);

Удаляетзапись идентифицируется по $ id.По умолчанию также удаляются записи, зависящие от записи, которая должна быть удалена.

Например, при удалении записи пользователя, связанной со многими записями рецепта (рецепты пользователя hasMany или hasAndBelongsToMany):

if $cascade is set to true, the related Recipe records are also deleted if the models dependent-value is set to true.
if $cascade is set to false, the Recipe records will remain after the User has been deleted.
...