2011-12-14 17 views
24

Approfondimento sugli interni di Magento qui, non cercando una soluzione a un problema concreto, solo cercando di capire alcuni dettagli di implementazione.Perché la relazione tra un prodotto configurabile e un prodotto semplice viene memorizzata due volte?

Quando si crea un prodotto configurabile in Magento, e quindi creare bambino prodotti semplici da implementare cose come la dimensione della camicia, il colore, ecc, i negozi Magento questo rapporto in due tavoli separati.

catalog_product_relation 
catalog_product_superlink_table 

Perché queste relazioni vengono archiviate due volte?

È questo codice legacy o esiste una distinzione semantica tra un collegamento di relazione di prodotto e un collegamento "superlink" di prodotto?

Il sistema si aspetta che siano uguali oppure è uno stato di oggetto valido per avere queste tabelle che rappresentano relazioni genitore/figlio diverse?

risposta

24

Perché è una grande domanda. La tabella catalog_product_super_link contiene solo dati relativi a prodotti configurabili. catalog_product_relation contiene anche le informazioni sulla relazione per i prodotti raggruppati e raggruppati, oltre alle relazioni configurabili.

Tutta la logica aziendale che ruota attorno ai prodotti configurabili fa riferimento alle tabelle catalog_product_super_*, ad es. trovare gli attributi configurabili e gli aggiornamenti di prezzo per un prodotto configurabile.

La tabella catalog_product_relation al contrario viene utilizzata da classi non specifiche per prodotti configurabili, come le classi di indicizzatore del prodotto catalogo astratto.

Sembra che il core team di Magento volesse separare le funzionalità logicamente distinte non solo in classi PHP separate, ma anche in tabelle di database separate. Possibili vantaggi? Immagino che teoricamente sia più facile in questo modo modificare l'implementazione del prodotto configurabile senza interrompere l'implementazione dell'indicizzatore.

Questa è solo una supposizione - non ho confermato che o parlato con qualcuno che "sa" (mentale-note-per-immaginare)

+18

Tutto è più semplice. I tipi di prodotti configurabili sono stati sviluppati quando non esistevano indici di relazione. Era persino il primo tipo di prodotto composito. Ovviamente aveva un tavolo proprio in quel momento. Non appena sono stati creati più materiali compositi, la tabella delle relazioni è stata creata per unificare la logica di recupero dei prodotti figlio/genitore per gli indici e le altre funzionalità in cui è richiesta. –

+0

Ah, questo ha molto senso! Grazie per aver chiarito, Ivan. – Vinai

Problemi correlati