@KevinSmash

Почему стирается значение даты при передаче?

Здравствуйте. В приведенном ниже коде, при нажатии на кнопку должно обновляться значение date_subscription_end. Но, по итогу date_subscription принимает нулевое значение(хранится в базе в формате int). Задав новые значения проверял на каждом этапе почему так, и оказалось что при сохранении он стирает дату, почему такое возможно?

public function actionSubscription(){
        $jd = Yii::$app->request->post();
        $jd = (object)$jd;

        Yii::$app->user->setIdentity(\common\models\User::findOne(['id'=>$jd->data]));

        $userSettings = UserSettings::findOne(["user_id" => $jd->data]);
        if ($userSettings->subscription == 1){
            $userSettings->subscription = 0;
            echo "date_subscription:".$userSettings->date_subscription."\n";
            echo "date_subscription_end:".$userSettings->date_subscription_end."\n";
        } else {
            $userSettings->subscription = 1;
           // $userSettings->date_subscription = date('Y-m-01');
            echo "date_subscription:".$userSettings->date_subscription."\n";
            $userSettings->date_subscription_end=date('Y-m-d', strtotime('+3 month'));
            echo "date_subscription:".$userSettings->date_subscription."\n";
            echo "date_subscription_end:".$userSettings->date_subscription_end."\n";
        }
if ($userSettings->save()){
            echo ".$userSettings->date_subscription." user_id: ".$userSettings->user_id." use_smart_publish: ".$userSettings->subscription. " date_subscription:".$userSettings->date_subscription;
        }


Вот сам запрос

$(document).ready(function(){
        $(".user_subscription").click(function(){
            if (confirm ("Продлить подписку?")) {
                jQuery.ajax({
                    url: '/admin/clients/subscription',
                    type: 'post',
                    contentType: 'application/x-www-form-urlencoded',
                    async: true,
                    dataType: 'html',
                    data: {
                        data: this.name
                    },
                    success: function (data) {
                        alert(data);
                    },
                    error: function () {
                        alert("Error");
                        location.reload();
                    }
                });
            }
        });
    });
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
Delgus
@Delgus
KevinSmash, в beforeValidate посмотри внимательно...там же strtotime вызывается
Надо знать что при вызове save вызываются и другие функции

При вызове метода save() или save(true) - цепочка следующая
- beforeValidate()->validate()->afterValidate()->beforeSave()->save()->afterSave()

А когда ставим save(false) то
beforeSave()->save()->afterSave()

Почитайте документацию Yii2, так очень долго рассказывать можно
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mosesfender
@mosesfender
Меланхолик, параноик, падал с коек
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы