Maison >développement back-end >Problème PHP >Solutions de suppression logicielle et de suppression physique du framework Phalcon

Solutions de suppression logicielle et de suppression physique du framework Phalcon

桉梓
桉梓original
2020-10-13 16:07:11412parcourir

Dans le développement de projets, différentes entreprises effectuent des opérations différentes sur les données de la base de données. Par exemple, certaines tables de données doivent supprimer physiquement les enregistrements de données, tandis que certains enregistrements des tables de données doivent être simulés (supprimés de manière logicielle). les frameworks utilisés maintenant ont implémenté ces deux opérations sur les données. Alors comment l'utiliser dans phalcon ?

Suppression physique dans phalcon $model->delete();

Utilisez $model->delete() dans phalcon ; l'exécution par défaut est la suppression physique, puis les enregistrements de données dans la base de données sont supprimés.

Utilisez la suppression logicielle dans phalcon

phalcon fournit de nombreuses fonctions similaires aux hooks. Je comprends que les hooks sont similaires aux fonctions du middleware. Il existe une méthode dans phalcon pour ajouter des comportements :

$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
        ]
            )
        );
    }
}

De cette façon, lors de l'utilisation du $. model->delete(), le champ correspondant dans la table de données est modifié en status = 'D' pour implémenter la fonction de suppression logicielle, mais quels sont les problèmes avec cela ? Pensez...

Ceci ? Un morceau de code est dans chaque modèle, redondant, et optimisation ultérieure... Ensuite, implémentez-le dans le BaseModel dans la classe parent que vous écrivez. Tous les modèles héritent de BaseModel et le partagent, ce qui est bien...

Les deux points ci-dessus doivent être Tout le monde connaît les avantages de faire cela. Alors, il n'y a pas de problème ?

Utiliser des pistes pour séparer le code

En fonction des différentes entreprises, le traitement des données dans la base de données. est également différent, et certains modèles nécessitent une suppression logicielle, et certains modèles doivent être physiquement supprimés. Utilisez la méthode suivante pour le faire :

 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();
        }
    }
}

À utiliser dans le modèle qui doit utiliser la suppression logicielle :

class Userodel extend Model {    
    use ModelSoftDeletes;
    ......
}
.

La méthode delete dans ModelSoftDeletes écrasera le modèle. La méthode delete ajoute une implémentation de suppression logicielle au modèle actuel avant d'appeler $model->delete().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn