رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
اجرانشدن afterDelete (حل شد)
#1
سلام
من یک اسکریپت لایک خیلی خیلی ساده نوشتم و رو وبلاگ yii1 تست کردم و کارم میکنه . حال میخوام بعد از حذف پست جدول مربوط به لایک های اون نوشته نیز حذف بشه
اینجوری نوشتم تو مدل post هام که وقتی نوشته ای پاک شد این کد اجرا بشه که نمیشه


protected function afterDelete()
{
   parent::afterDelete();
   Like::model()->deleteAll('post_id='.$this->id);
 
}

مشکل کارم کجاست؟ ممنون میشم راهنمایی کنید
پاسخ
تشکر شده توسط:
#2
این کد رو تست کنید:
protected function afterDelete()
{
    Like::model()->deleteAll('post_id=:postId', array(':postId' => $this->id));
    return parent::afterDelete();
}
پاسخ
تشکر شده توسط: shima_sadeghian
#3
ممنون استاد کدی که دادید کار کرد.ممنون از راهنماییتون
پاسخ
تشکر شده توسط:
#4
یک سوال هم داشتم من از این کدم استفاده کردم و کارم انجام شد
        protected function beforeDelete() {
            if (parent::beforeDelete()) {


             Yii::app()->db->createCommand("DELETE FROM tbl_like WHERE post_id={$this->id}")->execute();

             return true;
           }
         }

کدوم یکی بهینه تره؟ یا اصلا فرقی ندارند؟
پاسخ
تشکر شده توسط:
#5
این هم همون کار رو انجام میده ولی داره یه چک کردن اضافه انجام میده. بهرحال شما باید نتیجه parent::beforeDelete رو ارسال کنید که اگه true باشه کد شما هم داره همون رو میفرسته و اگه نباشه هیچی نمیفرسته که null هست و معادل false تعبیر میشه و درنتیجه متد delete اجرا نمیشه. البته این کدی که نوشتین beforeDelete هست نه afterDelete
پاسخ
تشکر شده توسط:
#6
ضمناً بهتره بجای این چک کردنهای دردسر آور، از خود MySQL با کمک قیدها بخواین وقتی یه پست حذف میشه لایکهاش رو هم حذف کنه.
پاسخ
تشکر شده توسط: shima_sadeghian




کاربران در حال بازدید این موضوع: 4 مهمان