octicon-rss(16/)
You've already forked yii2
mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-10 02:13:17 +08:00
53 lines
1.2 KiB
PHP
53 lines
1.2 KiB
PHP
<?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);
|
|
}
|
|
}
|