تالار گفتمان nCIS.ir

نسخه‌ی کامل: مشکل در دخیره اطلاعات در دیتابیس
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام

اساتید من در ذخیره اطلاعات در yii به مشکلی خوردم .

کد زیر رو ببینید .

                if ($newsadmin->save()) {
                    $to = $newsadmin->mobile;
                    $text = $newsadmin->name . " عزیزrn";
                    $text .= "اکانت شما به شرح زیر میباشدrn";
                    $text .= "Username(email) : " . $newsadmin->email . "rn";
                    $text .= "Password : " . $pass . "rn";
                    $text .= Yii::app()->homeUrl;
                    if (Sms::send($to, $text)) {
                        $smslog = new Smslog;
                        $smslog->to = $to;
                        $smslog->text = $text;
                        $smslog->ts; time();
                        if ($smslog->save()) {
                            $send = Send::model()->findByPk(1);
                            $send->sms++;
                            $send->save();
                        }
                    }

من هر موقع که 2 یا چند save() در شرط همدیگر استفاده میکنم save() اول انجام میشه اما بقیه نه در دیتابیس چیزی ذخیره نمیشه با اینکه دستور های داخل شرط ها انجام میشه .

مشکل کجاست یا بهتره همچین مواردی رو چطوری بنویسم ؟
دقت کنید که فقط وقتی که رکورد جدید با new ایجاد میکنید، save عمل insert رو انجام میده و در مواقع دیگه (حتی بعد از اینکه مدلی که با new ساخته شده رو یکبار save کردین)، دستور update اجرا میشه. هرجا دیدین چیزی ذخیره نمیشه، فیلد errors رو نمایش بدین ببینین مشکل از کجاست. مثال:
if($model->save()) {
    // ...
} else {
    Tools::debug($model->errors);
}
تو کدهاتون ظاهرا خط 12 مشکل داره. همچنین ممکنه هنگام ذخیره کردن خطایی رخ بده و مانع ذخیره شدن اطلاعات بشه که میتونید با استفاده از کد زیر خطاها رو ببینید.
if($model->save())
{
   ...
}
else
{
   print_r($model->errors);
}

همچنین میتونید کدهای شمارنده رو بصورت زیر بنویسید:
if ($smslog->save())
{
   Send::model()->findByPk(1)->saveCounters(['sms' => 1]);
}