Yii2 如何处理删除时的完整性约束冲突?

Yii2 如何处理删除时的完整性约束冲突?,yii2,Yii2,我有行,其中一些行无法删除,因为它引用了其他表,而另一些行可以删除 我想要的是删除可以删除的行,保留其他不能删除的行 到目前为止,我的代码是 $tkota = TbKota::find()->all(); foreach($tkota as $kota){ if($kota->delete()){ echo "del success<br/>";

我有行,其中一些行无法删除,因为它引用了其他表,而另一些行可以删除

我想要的是删除可以删除的行,保留其他不能删除的行

到目前为止,我的代码是

$tkota = TbKota::find()->all();
            foreach($tkota as $kota){
                if($kota->delete()){
                    echo "del success<br/>";
                }else{
                    echo "fail ".$kota['api_id']."<br/>";
                }
            }
而不是在删除记录时显示成功,在无法删除记录时显示失败

我的代码怎么了

提前感谢。

foreach($kota作为$kota){
foreach($tkota as $kota){
     try {
        if($kota->delete()){
           echo "del success<br/>";
        }
     } catch (\Exception $e) {
        echo "fail ".$kota['api_id']."<br/>";
     }
}
试一试{ 如果($kota->delete()){ 回声“del success
”; } }捕获(\异常$e){ echo“失败”。$kota['api_id'].“
”; } }
这个会更好

使用yii\db\IntegrityException

使用yii\web\NotFoundHttpException


使用
尝试…捕获
foreach($tkota as $kota){
     try {
        if($kota->delete()){
           echo "del success<br/>";
        }
     } catch (\Exception $e) {
        echo "fail ".$kota['api_id']."<br/>";
     }
}
  foreach($tkota as $kota){

  $connection = \Yii::$app->db;
  $transaction = $connection->beginTransaction();

  try {
          $kota->delete();
          $transaction->commit();
          return $this->redirect(['user/view', 'id' => $model->id]);

      }catch (IntegrityException $e) {

           $transaction->rollBack();
           throw new \yii\web\HttpException(500,"YOUR MESSAGE.", 405);


      }catch (\Exception $e) {

          $transaction->rollBack();
          throw new \yii\web\HttpException(500,"YOUR MESSAGE", 405);


    }

}