/** * Создает команду DELETE для отдельной таблицы. Переопределяет родительскую реализацию * для проверки наличия выражения ORDER BY в случае наличия определенного смещения * @param mixed $table схема таблицы ({@link CDbTableSchema}) или имя таблицы (строка) * @param CDbCriteria $criteria критерий запроса * @return CDbCommand команда удаления */ public function createDeleteCommand($table, $criteria) { $criteria = $this->checkCriteria($table, $criteria); return parent::createDeleteCommand($table, $criteria); }
public function actionDelete($id) { if (Yii::app()->request->isPostRequest) { if (isset($_POST['YII_CSRF_TOKEN']) && $_POST['YII_CSRF_TOKEN'] === Yii::app()->request->csrfToken) { $model = Pages::model()->findByPk($id); if ($model == null) { throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.'); } foreach ($model->contents as $content) { $criteria = new CDbCriteria(); $criteria->condition = 'content_id=:content_id'; $criteria->params = array('content_id' => $content->id); $builder = new CDbCommandBuilder(Yii::app()->db->getSchema()); $command = $builder->createDeleteCommand('contents_lang', $criteria); $result = $command->execute(); $content->delete(); } $criteria = new CDbCriteria(); $criteria->condition = 'page_id=:page_id'; $criteria->params = array('page_id' => $model->id); $builder = new CDbCommandBuilder(Yii::app()->db->getSchema()); $command = $builder->createDeleteCommand('pages_lang', $criteria); $result = $command->execute(); $model->delete(); Yii::app()->user->setFlash('success', Yii::t('app', 'Страница успешно удалена')); $this->redirect($this->createUrl('index')); } } else { throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.'); } }