iyi uygulamalar, bu yüzden, kaskad eylemi silmek çağırmak olamaz. Aynı zamanda, yii2 uygulamamdaki ilgili kayıtları silmek istiyorum. Bunu nasıl yapabilirim?Sil ilgili kayıtlar - <em>MyISAM</em> bunu desteklemediği için My veritabanı</em> motor kaputu altında <em>MyISAM kullanan
cevap
Not: çözümü, yalnızca ActiveRecord delete method'u kullanırsanız çalışacaktır.
beforeDelete yöntemini kullanabilir ve ilgili kayıtları buradan silebilirsiniz - bu durumda kodu bir kez yazacaksınız ve her defasında $model->delete()
numaralı telefonu aradığınızda yürütülecektir.
Veya EVENT_BEFORE_DELETE etkinliğine işleyici ekleyebilirsiniz.
Geç cevap için özür dilerim. Her şeyden önce optimizasyonun veritabanının kendisine (doğru indeksler vb.) Bağlı olduğunu düşünüyorum. Bir seçenek olarak, ilgili kayıtları silen ve bu prosedürü çağıran saklı yordam yaratabilirsiniz ... – rkm
Tetikleyiciler oluşturmaya ne dersiniz? –
https://stackoverflow.com/questions/31110462 sayfasına bakın. –
Bu sorunu gidermek için birkaç seçenek vardır.
1) DB tarafında trigger oluşturun:
public function beforeDelete() {
if (!parent::beforeDelete()) {
return false;
}
// ... custom code here ...
return true;
}
Tetikleyiciler başvuru bütünlüğü zorlanarak daha hızlı ve iyi, işte bu yüzden: yii2 beforeDelete işlevi içinde
CREATE TRIGGER trigger_name
BEFORE DELETE ON table_name FOR EACH ROW
BEGIN
-- variable declarations
-- trigger code
END;
2) Sil ilgili kayıtlar Onları seçtim.
Olası kopyası [Yii2: Veri tabanından ilgili modellerin verileri nasıl silinmeli?] (Https://stackoverflow.com/questions/31110462/yii2-how-to-simultaneously-delete-related-models-data- veri tabanından) –