So wählen Sie bestimmte Felder mit Aliasen mit JoinTable oder JoinField in Magento aus

8

Ich möchte Daten * im Rechnungsraster, das im Magento-Admin-Panel sichtbar ist, vorfiltern.

Hier ist eine Frage, die ich zuvor gestellt habe, und diese steht in Zusammenhang mit der dafür vorgestellten Lösung und könnte daher eine gute Erklärung sein.

Ich ändere also die Methode "Mage_Adminhtml_Block_Sales_Invoice_Grid :: _ prepareCollection" so, dass sie zuerst den Kunden abruft, der vom angemeldeten Administrator weitergeleitet wurde. Dann werden Bestellungen von diesen Kunden abgerufen - idealerweise nur die Bestell-IDs. - Fügen Sie diese Sammlung dann zu sales / order_invoice_grid hinzu, damit Rechnungen für diesen Administrator aufgelistet werden.

Auf der Grundlage der letzten Antwort und unter Verwendung der dieser -Dokumente gibt es drei Möglichkeiten, wie ich versucht habe, diesen Informationen beizutreten: (Codebeispiel 1)

%Vor%

Wenn ich das obige mache, sehe ich den folgenden Fehler:

%Vor%

Wenn ich den zweiten Aufruf von joinTable entferne, funktioniert der obige Code, aber das ist nicht das, was ich will.

Die andere Methode, die ich ausprobiert habe, ist mit diesem Code:

%Vor%

Hier erscheint der Fehler in der zweiten Zeile, wo ich versuche, das Feld order.entity_id so zu aliasieren, dass es nicht mit Rechnungstabellen entity_id kollidiert. Das erzeugt jedoch einen Fehler wie:

  

Artikel (Mage_Customer_Model_Customer)   mit der gleichen ID "1" existiert bereits

Ich brauche nur Bestell-IDs, damit ich verknüpfte Rechnungen bekommen kann, was darauf hindeutet, dass ich auch die joinField-Funktion verwenden kann, die ich folgendermaßen ausprobiert habe:

%Vor%

Aber es gibt mir den folgenden Fehler:

Item (Mage_Customer_Model_Customer) mit der gleichen ID "1" existiert bereits

Ich bin auf der Suche nach einer Lösung, die Rechnungen von Kunden zusammenführt.

Vorfilter bedeutet, dass die im Raster aufgelisteten Daten gefiltert werden, noch bevor etwas im Raster angezeigt wird.

Ok, jetzt sieht mein Code wie folgt aus:

%Vor%

Und der Fehler, den ich bekomme, ist:

%Vor%
Ozair Kafray 16.10.2010, 15:19
quelle

5 Antworten

8

Hier ist die Summe meines Testskripts. Um es in eine Datei im Magento-Stamm zu legen und seine URL direkt in Ihrem Browser einzugeben, wird es nicht von den Magento-Controllern gehandhabt. Dies ist eine gute Art des Experimentierens, da sie nicht so stark von anderen Modulen, Seitenlayouts usw. beeinflusst wird.

%Vor%

Wie bei Ihrer vorherigen Frage habe ich die anfänglichen Spalten zurückgesetzt, weil ich nicht daran glaube, der Datenbank mehr Arbeit zu geben als nötig. Es ist aber nicht unbedingt notwendig, der Test gelingt trotzdem ohne ihn.

Wenn dies in Ihrer Installation nicht funktioniert, müssen wir uns überlegen, was dieser äußere Einfluss sein könnte.

    
clockworkgeek 17.10.2010, 17:10
quelle
2

Der Fehler " Ein gemeinsames Feld mit diesem Alias ​​(0) ist bereits deklariert. " tritt auf, weil es Array-Schlüssel als Aliase verwendet. Da Sie zwei Aufrufe von joinTable() mit jeweils einem Array haben, versucht es, den nullbasierten Index von beiden zu verwenden und offensichtlich einen Konflikt zu haben.
Also statt

%Vor%

probiere

aus %Vor%

um den Konflikt zu vermeiden.

    
clockworkgeek 16.10.2010 19:31
quelle
2

Ich habe dies schließlich erreicht, indem ich von Rechnungs-& gt; Order- & gt; Kunde als "Anda B" vorgeschlagen. Ich füge gerade meine Lösung hier als Referenz ein, verwende aber diese Lösung von clockworkgeek , da es so aussieht Reiniger. Und meine Lösung muss noch sauberer gemacht werden, indem man die 'ID' von eav_attribute (agent_id) zur Laufzeit aus der Datenbank holt, anstatt sie hart zu codieren, wie hier eingefügt:

%Vor%     
Ozair Kafray 18.10.2010 05:56
quelle
1

Es gibt Ihnen diesen Fehler "Artikel (Mage_Customer_Model_Customer) mit der gleichen ID" 1 "existiert bereits" weil ein Kunde mehrere Bestellungen haben kann und somit zwei oder mehr Einträge mit derselben Kundennummer haben kann - Sie erstellen eine Sammlung von Kunden und Sie müssen eindeutige Einträge in der Sammlung haben. Sie müssen von Rechnungen ausgehen und sie mit den Kunden verbinden.

    
Anda B 16.10.2010 17:03
quelle
1

Der einfachste Weg, den ich im Magento-Forum gefunden habe,

Im

%Vor%

Wir können benutzerdefinierte Abfragen als

verwenden %Vor%

und es funktioniert

%Vor%     
epynic 25.09.2013 10:31
quelle

Tags und Links