Cestino temporaneo

Salve a tutti,
ho una tabella con delle edizioni.
Ho creato una check box per cancellare in massa grandi quantità di dati, e tutto funziona. Ora, vorrei sapere se c’è un modo per implementare un cestino temporaneo, in modo da poter recuperare, volendo, le edizioni cancellate. Qualcuno lo sa fare e potrebbe aiutarmi?
Grazie mille.

Puoi guardare un’estensione tipo questa, ce ne sono diverse

Grazie mille !!

Inserisci un campo deleted (oppure cancellato, oppure chiamalo come vuoi) ed estendi il metodo delete del model (qui ho inserito anche un campo delete_time per salvare data e ora di cancellazione):

<?php
public function delete()
{
    $this->deleted = 1;
    $this->delete_time = date_format(date_create('now'), 'Y-m-d H:i:s');

    if ($this->beforeDelete()) {
        $this->update(false, ['deleted', 'delete_time']);
        $this->afterDelete();
    }
}    

Ricordati però poi nella visualizzazione dei dati di escludere quelli cancellati, ovvero:

$models = MioModel::find()->andWhere(['deleted' => 0])->all()

1 Like

Ho usato una action Deletemultiple:

public function actionDeletemultiple()
{
$ids = Yii::$app->request->post(‘ids’);

    if (!$ids) {
        return;
    }

    foreach ($ids as $id)
    {
        $model = $this->findModel($id);

        if ($model->delete()) {
            Yii::$app->session->setFlash('success', Yii::t('app', 'Titolo/i cancellato/i !'));
        } else {
            Yii::$app->session->setFlash('error', Yii::t('app', 'Errore nella cancellazione!'));
        }
    }

    // Set Success Message
    Yii::$app->session->setFlash('success', Yii::t('app', 'Cancellazione avvenuta con successo!'));
}

Come agisco in questo caso?

Non c’è nulla da aggiornare se hai fatto l’override del metodo delete del model.

Grazie per questa domanda, è molto importante per me!