Détail du message 80925.1

Message numéro 1 dans le sujet Archivage des produits.

  • 80925.1

    19/09/2013 19:25


    hioli01
    Rang : Adepte
    Bonjour,

    Je souhaites savoir si rbs permet d'archiver des produits.
    En fait après 2 ans d'utilisation de rbs pour une boutique en ligne, on se trouve avec une table product qui contient 30000 et qlq produit alors que nous n'avons besoin d'un tiers de ces produits.
    Nous avons pensé à faire la suppression des produits avant chaque import, mais on il y a des relations entre produit et commande on souhaite garder les anciens produits et juste leur donnés un statut 'ARCHIVED'.
    Ce besoin vient du faite que la tache de compilation des produits devient très lente et block tout les temps.

    Alors techniquement ce que j'ai fais et le suivant :
    j'ai fais une manipulation hors change sur la base de données pour données au produit que nous n'avant plus besoin le statut archived.
    Puis j'ai surchargé le service ProductService et au niveau de la methode getProductIdsToCompile j'ai rajouté la restriction suivante :

    "->add(Restrictions::ne('publicationstatus', 'ARCHIVED'))"

    idem au niveau de la methode getCountProductIdsToCompile()

    on affichant dans le log le resultat de la methode getCountProductIdsToCompile() , je trouves que le nombre est egale au nombre total des produits inclu ceux dont le statut est ARCHIVED.
    Donc la tache de compilation parcours toujours tout les produits.

    Ce que je ne comprend pas c'est au niveau base de données le statut ARCHIVED y est toujours.
    est ce que la restriction que j'ai rajouté est fause ou bien change stock les statut des produits .. je ne comprend pas trop , je vous passe le code des deux methodes
    /**
    	 * @return integer[]
    	 */
    	public final function getProductIdsToCompile()
    	{
    		return $this->createQuery()
    			->add(Restrictions::ne('publicationstatus', 'ARCHIVED'))
    			->add(Restrictions::eq('compiled', false))
    			->setProjection(Projections::property('id', 'id'))
    			->findColumn('id');
    	}
    	
    	/**
    	 * @return integer
    	 */
    	public final function getCountProductIdsToCompile()
    	{
    		$data = $this->createQuery()
    			->add(Restrictions::ne('publicationstatus', 'ARCHIVED'))
    			->add(Restrictions::eq('compiled', false))
    			->setProjection(Projections::rowCount('count'))
    			->findColumn('count');
    		return $data[0];
    	}
    


    Après les modif que j'ai fais j'ai bien fait caop et ua et j'ai verifié au niveau cache autoload que le service a été bien remplace et contient le bonne code pour les methodes.

    Sinon Rbs a t il prévu autre methode pour l'archivage des produits .

    Merci d'avance
    Cordialement

    Développeur et intégrateur web
    RBSChange V 3.5.2 e-commerce
 
1471 membres
Aucun membre connecté