Есть таблица с именами и с ней связана таблица контактов и таблица сообщений. Мне нужно удалить какого нибудь пользователя естественно со всеми записями из других таблиц. Как можно это осуществить.
Есть таблица с именами и с ней связана таблица контактов и таблица сообщений. Мне нужно удалить какого нибудь пользователя естественно со всеми записями из других таблиц. Как можно это осуществить.
Если таблицы типа InnoDB, и между ними прописаны необходимые связи, то удаление производится автоматически самой СУБД.
В ином случае нужно поместить удаление связанных записей в метод afterDelete вашей модели:
protected function afterDelete()
{
Message::model()->deleteAll("`user_id` = {$this->id}");
parent::afterDelete();
}
Даже если там отношение HAS_MANY?
Попробовал - не удаляет.
andy_s говорит про on delete cascade на ваших связях
Я новичек…
и не знаю как уии удалает
но предположу, что может у вас ваш Ид уже ноль после удаления?
/**
* @param boolean $runValidation
* @param array $attributes
*/
public function save($runValidation=true,$attributes=null){
if(false!==($result=parent::save($runValidation,$attributes))){
foreach(array_keys($this->getMetaData()->relations) as $name){
if($this->hasRelated($name) && is_object($relation=$this->$name)){
/* @var $relation CActiveRecord */
$result&=$relation->save($runValidation,$attributes);
$this->addErrors($relation->getErrors());
}
}
}
return !$this->hasErrors();
}
если вы желаете что-то делать с зависимыми записями - делайте это ручками, либо используйте поведения (behaviors), в экстэншнах можно найти несколько примеров.
если вы новичек , предлагаю сначала понять первые два шага, потом советовать (после удаления primaryKey не обнуляется)
ясн, пасиб) буду знать…