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()
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 ] ) ); } }
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(); } } }
Verwenden Sie sie in dem Modell, das eine weiche Löschung verwenden muss:
class Userodel extend Model { use ModelSoftDeletes; ...... }
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!