Как написать метод создать в REST API (YII2), чтобы добавить объект по условию - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу сохранить новую запись в БД, только если те же логин и номер еще не использованы.Но код сохраняет его в БД, даже если запись с такими же параметрами уже существует

Я пишу $ model-> save ();внутри условий, но все равно сохраняет. Код всего контроллера

  <?php
namespace app\modules\api\controllers;
use yii\rest\ActiveController;
use app\models\Client;
class ClientsController extends ActiveController
{
    public $modelClass = 'app\models\Client';

      public function actionCreate(){
        $model = new Client();
        $login = $model->login;
        $carNumber = $model->carNumber;
        $result =null;
        if (!Client::findOne(['carNumber'=>$carNumber])){
            if(!Client::findOne(['login'=>$login])) {
                $model->save();
                $result = $model;
                return $result;
            }
            else {
                $result = "this login have been already used";
                return $result;
            }
        }
        else {
            $result = "this car number have been already used";
            return $result;
        }
    }
}

1 Ответ

0 голосов
/ 06 февраля 2019

Вы должны добавить уникальную проверку в правилах модели:

    public function rules()
    {
    return [
        [['login','carNumber'], 'unique'],
    ];
    }

А в actionCreate вы должны передать свои атрибуты через запрос POST, и тогда ваше действие должно стать, например:

public function actionCreate(){
    $model = new Client();
    if ($model->load(Yii::$app->request->post())) {
      if ($model->save()) {
        return $model;
        }
      return $model->errors; //or whatever you want
    }
}

Дальнейшее чтение: Yii2 Подтверждение ввода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...