как удалить дочерние объекты в php activerecord в codeigniter

Я использую php-activerecord в своем проекте Codeigniter, у меня есть 2 таблицы в моей базе данных, таблица вопросов и таблица ответов, связанные в отношении один ко многим, когда я удаляю такой вопрос

    $question = Question::find($id);
$question->delete();

Ответы на этот вопрос не удаляются, я должен использовать метод обратного вызова before_destroy во всех моих моделях, чтобы достичь этого, он кажется излишним.

Мой вопрос, возможно ли удалить дочерние объекты, связанные с родителем, когда я удаляю родителя, не используя метод обратного вызова?

0

Решение

Если вы не хотите делать это в базе данных, как предложил @patrick в комментариях, трудно представить способ сделать это, который даст вам больше контроля. Автоматическая вещь (например, добавление ее в функцию удаления) оставит вас такими же ограниченными.

Лучше всего было бы сделать функцию в модели Вопроса. Тот, который удаляет потомков с помощью цикла, тот, который вы бы назвали так:

$q = Question::find($id);
$q->deleteChildern();
$q->delete();

Или функция, которая делает это и удаляет объект, так что вы получите

$q = Question::find($id);
$q->deleteWithChildren();

Сама функция была бы простой вещью вроде

foreach($this->children as $child){
$child->delete();
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]