2009-04-25 7 views
4

각 페이지 요청을 시작할 때 데이터베이스에 연결해야하는 간단한 Magento 모듈을 만들려고합니다. 모든 테이블에 액세스 할 수 있어야합니다. 나는 그것을하는 방법을 이해하려고 노력하면서 내 머리카락을 꺼내왔다. 내가 알아낼 수있는 가장 좋은 점은 내 모듈의 config.xml 파일에 이것을 설정해야한다는 것이었지만 정확히 어떻게 그 명령이 사용되는지/알아낼 수는 없었습니다.Magento에서 데이터베이스에 연결하는 방법은 무엇입니까?

누군가 나를 안내하거나 나에게이 작업을 수행하는 방법을 보여줄 수 있습니까? 그렇지 않다면 데이터베이스에 수동으로 연결하는 사용자 정의 config.php 파일을 포함시키는 것이 좋지 않을까요?

+0

클릭 업데이트가? 나는 당신이 당신의 질문에서 언급 한 것과 같은 상황에있는 것처럼 당신의 솔루션을 듣고 싶습니다. –

답변

15

자원 모델 또는 엔티티를 사용하려고합니까? 다음은 원시 SQL을 사용하여 테이블을 쿼리하는 방법이지만 tablename을 알아야합니다. 모든 모델에하려고 할 때

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

당신이, 내가 내 사용자 지정 모듈에 대한 두 번째 방법을 사용하고 나를 위해 잘 많은 일

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

을 사용할 수 있습니다 희망이 답변이 도움이 :)

+0

원시 SQL 메서드를 사용하면 오류가 발생합니다. 기본적으로 컨트롤러에서 DB에 연결하려고합니다. 그게 허용됩니까? –

+0

컨트롤러에서 db에 직접 액세스하지 않았습니다. 원시 SQL 메서드로 함수가있는 블록을 만들려고 할 수 있습니까? 컨트롤러의 indexAction() 메소드에서 해당 함수에 액세스 할 수 있어야합니다. 컨트롤러의 dispatch(), preDispatch() 및 postDispatch() 메서드를 살펴볼 수도 있습니다. 나는 불행하게도 그들에 익숙하지 않다. –

+1

릭, IM 프로그램이나 MSN이 있으십니까? 나는 내가 대답을 찾을 수 없었던 몇 가지 질문을 가지고있다. 나는 그들에게 도움이되고 싶다. –

0

addAttributeToFilter이없는 객체는 어떻게됩니까? 그 이름으로 역할 객체를로드하는 데 수 시간 동안 노력했지만 아무 것도 작동하지 않습니다. 유일하게 가능한 방법은 불가능 문자열 값을 사용하여 필터링 할 수있는 Mage_Admin_Model_Mysql4_Role::load에 unexplicable

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

완벽하게하지 경우 일 것이다 부하이다.

젠토 당신은 일하러 가야 관리 않았다하는 Rube Goldberg 아키텍처 ...

관련 문제