Exemple #1
0
}
Event::on(Photo::className(), Photo::EVENT_BEFORE_INSERT, function ($event) {
    // если это первый кавер, то делаем его основным,
    // иначе, если этот кавер должен стать основным, сбрасываем is_main у всех предыдущих каверов
    $photo = $event->sender;
    if (!$photo->artist->getPhotos()->count()) {
        $photo->is_main = true;
    } elseif ($photo->is_main) {
        Photo::resetIsMain($photo->artist_id);
    }
});
Event::on(Photo::className(), Photo::EVENT_BEFORE_UPDATE, function ($event) {
    // если этот кавер должен стать основным, сбрасываем is_main у всех предыдущих каверов
    $photo = $event->sender;
    if ($photo->is_main) {
        Photo::resetIsMain($photo->artist_id);
    }
});
Event::on(Photo::className(), Photo::EVENT_BEFORE_DELETE, function ($event) {
    // если удаляется основной кавер, вместо него основным становится следующий по очереди
    $photo = $event->sender;
    if ($photo->is_main) {
        $newMainPhoto = $photo->artist->getPhotos()->andWhere(['is_main' => 0])->orderBy('id')->limit(1)->one();
        if ($newMainPhoto) {
            $newMainPhoto->is_main = 1;
            $newMainPhoto->save();
        }
    }
});
Event::on(Photo::className(), Photo::EVENT_BEFORE_DELETE, function ($event) {
    $event->sender->file->delete();