2009-04-25 15 views
4

Ich versuche, ein einfaches Magento-Modul zu erstellen, das zu Beginn jeder Seitenanforderung eine Verbindung zur Datenbank herstellen muss. Alle Tabellen müssen für sie zugänglich sein. Ich habe mir die Haare ausgezogen, um zu verstehen, wie es geht. Das Beste, was ich herausfinden konnte, war, dass ich dies in der config.xml Datei meines Moduls einstellen musste, aber was genau dieser Befehl ist/wie er benutzt werden kann, konnte ich nicht herausfinden.Wie verbinde ich mich mit der Datenbank in Magento?

Kann jemand mich bitte führen oder mir zeigen, wie man das erreicht? Wenn nicht, wäre es zu schade, eine benutzerdefinierte config.php Datei aufzunehmen, die sich manuell mit der Datenbank verbindet?

+0

Klicken Sie auf Update, haben Sie es geschafft, es zu bekommen zu arbeiten? Ich würde gerne Ihre Lösung hören, da ich in der gleichen Situation bin, in der Sie in Ihrer Frage erwähnt haben. –

Antwort

15

Versuchen Sie ein Ressourcenmodell oder eine Entität zu verwenden? Hier können Sie eine Tabelle mit Raw SQL abfragen, aber Sie müssen den Tabellennamen kennen.

$w = Mage::getSingleton('core/resource')->getConnection('core_write'); 
$result = $w->query('select entity_id from catalog_product_entity'); 

if (!$result) { 
    return false; 
} 

$row = $result->fetch(PDO::FETCH_ASSOC); 
if (!$row) { 
    return false; 
} 

Wenn alle Modell versuchen Sie

$products = Mage::getModel('catalog/product')->getCollection(); 

$products->addAttributeToFilter('entity_id', array('in' => array(1,2))); 

$products->addAttributeToSelect('*'); 
$products->load(); 

foreach ($products as $_prod) { 
    var_dump($_prod->getData()); 
} 

ich die zweite Methode für meine benutzerdefinierte Module verwenden verwenden und es hat gut für mich gearbeitet, hoffen, dass diese Antwort hilft :)

+0

Die Verwendung dieser Raw-SQL-Methode gibt einen Fehler aus. Ich versuche grundsätzlich, von einem Controller eine Verbindung zur db herzustellen. Ist das erlaubt? –

+0

Ich habe nicht versucht, direkt von einem Controller auf die db zuzugreifen. Können Sie versuchen, einen Block zu erstellen, der eine Funktion mit der rohen SQL-Methode hat? Sie sollten auf diese Funktion über die indexAction() -Methode Ihres Controllers zugreifen können. Sie können auch die Methoden dispatch(), preDispatch() und postDispatch() des Controllers anzeigen. Ich kenne sie leider nicht. –

+1

Rick, hast du irgendwelche IM-Programme oder MSN, wo ich für ein bisschen mit dir chatten könnte? Ich habe einige Fragen, auf die ich keine Antworten finden konnte, ich würde wirklich gerne Hilfe mit ihnen haben –

0

Was ist mit Objekten, die nicht addAttributeToFilter haben? Ich habe stundenlang versucht, ein Rollenobjekt mit seinem Namen zu laden, und nichts funktioniert. Die einzig mögliche Methode ist Last, die für ein unerklärliches

if (!intval($value) && is_string($value)) { 
    $field = 'role_id'; 
} 

in Mage_Admin_Model_Mysql4_Role::load perfekt, wenn nicht funktionieren würde, das macht es nur unmöglich, mit einem String-Wert zu filtern.

Magento hat eine Rube Goldberg Architektur ...

Verwandte Themen