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

نسخه‌ی کامل: اجرانشدن afterDelete (حل شد)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام
من یک اسکریپت لایک خیلی خیلی ساده نوشتم و رو وبلاگ yii1 تست کردم و کارم میکنه . حال میخوام بعد از حذف پست جدول مربوط به لایک های اون نوشته نیز حذف بشه
اینجوری نوشتم تو مدل post هام که وقتی نوشته ای پاک شد این کد اجرا بشه که نمیشه


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

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


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

             return true;
           }
         }

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