You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* @link http://www.yiiframework.com/
|
|
|
|
* @copyright Copyright (c) 2008 Yii Software LLC
|
|
|
|
* @license http://www.yiiframework.com/license/
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace yii\rest;
|
|
|
|
|
|
|
|
use Yii;
|
|
|
|
use yii\db\ActiveRecord;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* DeleteAction implements the API endpoint for deleting a model.
|
|
|
|
*
|
|
|
|
* @author Qiang Xue <qiang.xue@gmail.com>
|
|
|
|
* @since 2.0
|
|
|
|
*/
|
|
|
|
class DeleteAction extends Action
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @var boolean whether to start a DB transaction when deleting the model.
|
|
|
|
*/
|
|
|
|
public $transactional = true;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Deletes a model.
|
|
|
|
*/
|
|
|
|
public function run($id)
|
|
|
|
{
|
|
|
|
$model = $this->findModel($id);
|
|
|
|
|
|
|
|
if ($this->checkAccess) {
|
|
|
|
call_user_func($this->checkAccess, $this->id, $model);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($this->transactional && $model instanceof ActiveRecord) {
|
|
|
|
$transaction = $model->getDb()->beginTransaction();
|
|
|
|
try {
|
|
|
|
$model->delete();
|
|
|
|
$transaction->commit();
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
$transaction->rollback();
|
|
|
|
throw $e;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$model->delete();
|
|
|
|
}
|
|
|
|
|
|
|
|
Yii::$app->getResponse()->setStatusCode(204);
|
|
|
|
}
|
|
|
|
}
|