Soft-Deletion- und physische Deletion-Lösungen des Phalcon-Frameworks

桉梓
Freigeben: 2020-10-13 16:39:12
Original
350 Leute haben es durchsucht

Bei der Projektentwicklung haben verschiedene Unternehmen unterschiedliche Vorgänge für Daten in der Datenbank. Beispielsweise müssen einige Datentabellen Datensätze physisch löschen, während einige Datensätze in den Datentabellen vorgetäuscht (vorläufig gelöscht) werden müssen Die Frameworks haben diese beiden Operationen für Daten implementiert.

Physisches Löschen in Phalcon $model->delete(); Die Standardausführung ist das physische Löschen, dann werden die Datensätze in der Datenbank gelöscht.

phalcon bietet viele ähnliche Funktionen wie Hooks und Middleware Eine Methode in Phalcon zum Hinzufügen von Verhalten:

$this->addBehavior()
Nach dem Login kopieren
use Phalcon\Mvc\Model;
use Phalcon\Mvc\Model\Behavior\SoftDelete;
class Users extends Model{    
    const DELETED = "D";    
    const NOT_DELETED = "N";   
    public function initialize()
    {
        $this->addBehavior(
        new SoftDelete(
        [
            "field" => "status", // 数据库中的字段
            "value" => Users::DELETED, //修改数据库中status的值为D
        ]
            )
        );
    }
}
Nach dem Login kopieren

Auf diese Weise wird bei Verwendung der $model->delete()-Methode das entsprechende Feld in der Datentabelle auf status = 'D' geändert, um eine weiche Löschfunktion zu erreichen, aber Was sind die Probleme dabei? Denken Sie ... Dieser Code ist in jedem Modell redundant und wird dann in der übergeordneten Klasse implementiert, und alle Modelle erben BaseModel. ..

Sie müssen die beiden oben genannten Punkte befolgen, jeder kennt die Vorteile. Gibt es also kein Problem?

Verwenden Sie Trails, um Code zu trennen.

Je nach Unternehmen ist auch die Verarbeitung der Daten in der Datenbank unterschiedlich. Einige Modelle erfordern eine weiche Löschung, während andere eine physische Löschung erfordern. Verwenden Sie die folgende Methode:

 namespace xxxx;
 use Phalcon\Mvc\Model\Behavior\SoftDelete;
 if (!trait_exists('ModelSoftDeletes')) {    
     trait ModelSoftDeletes{
         public function delete(){
             $this->addBehavior(
                 new SoftDelete([
                 "field" => "is_deleted", 
                 "value" => self::DELETED
                ])
            );
            return parent::delete();
        }
    }
}
Nach dem Login kopieren

Verwenden Sie sie in dem Modell, das eine weiche Löschung verwenden muss:

class Userodel extend Model {    
    use ModelSoftDeletes;
    ......
}
Nach dem Login kopieren

Die Löschmethode in ModelSoftDeletes überschreibt die Löschmethode in Model, Soft hinzufügen Löschen Sie die Implementierung im aktuellen Modell, bevor Sie $model->delete() aufrufen.

Das obige ist der detaillierte Inhalt vonSoft-Deletion- und physische Deletion-Lösungen des Phalcon-Frameworks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
1
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!