2011-01-11 38 views
8

Tôi cần kết nối với một số cơ sở dữ liệu bên ngoài từ Magento. Tôi đã tìm thấy một hướng dẫn để Create an external database connection in Magento. Hướng dẫn này hữu ích và nó hoạt động để kết nối với một cơ sở dữ liệu bên ngoài. Nhưng, tôi phải kết nối nhiều cơ sở dữ liệu bên ngoài.Làm thế nào để kết nối nhiều cơ sở dữ liệu bên ngoài trong Magento?

Làm cách nào để kết nối với nhiều cơ sở dữ liệu bên ngoài (giả sử 5 cơ sở dữ liệu bên ngoài) trong Magento?

+0

Loại câu hỏi này không thực sự thuộc về Stack Overflow vì nó không phải là một câu hỏi lập trình. Bạn nên nhìn vào http://area51.stackexchange.com/proposals/25439/magento và xem về việc có được một nơi thích hợp để đặt những loại câu hỏi này – Sturm

Trả lời

2

Tôi tìm thấy một mô-đun này Magento sẽ giúp kết nối với hệ thống cơ sở dữ liệu bên ngoài. http://subesh.com.np/2012/02/magento-external-database-connector-v1-0-0-released/

Tôi đã thử mô-đun và dường như hoạt động tốt. Hy vọng điều này sẽ hữu ích.

EDIT:

Mô-đun cũng có sẵn trên Magento Connect. http://www.magentocommerce.com/magento-connect/sp-edb-4574.html

+0

Liên kết đó đã chết ngay bây giờ, bạn có ULR mới không? bất kỳ nhận xét tiếp theo nào về cách hoạt động của tính năng này trong các trang web trực tiếp? –

5

Tôi chưa thử nghiệm, nhưng tôi hy vọng rằng sao chép các nút externaldb_* dưới global\resources bằng tên tài nguyên khác (duy nhất), ví dụ: externaldb2_* sẽ hoạt động.

<global> 
<resources> 
    <externaldb_write> 
    <connection> 
     <use>externaldb_database</use> 
    </connection> 
    </externaldb_write> 
    <externaldb_read> 
    <connection> 
     <use>externaldb_database</use> 
    </connection> 
    </externaldb_read> 
    <externaldb_setup> 
    <connection> 
     <use>core_setup</use> 
    </connection> 
    </externaldb_setup> 
    <externaldb_database> 
    <connection> 
     <host><![CDATA[localhost]]></host> 
     <username><![CDATA[db_username]]></username> 
     <password><![CDATA[db_password]]></password> 
     <dbname><![CDATA[db_name]]></dbname> 
     <model>mysql4</model> 
     <type>pdo_mysql</type> 
     <active>1</active> 
    </connection> 
    </externaldb_database> 
    <externaldb2_write> 
    <connection> 
     <use>externaldb2_database</use> 
    </connection> 
    </externaldb2_write> 
    <externaldb2_read> 
    <connection> 
     <use>externaldb2_database</use> 
    </connection> 
    </externaldb2_read> 
    <externaldb2_setup> 
    <connection> 
     <use>core_setup</use> 
    </connection> 
    </externaldb2_setup> 
    <externaldb2_database> 
    <connection> 
     <host><![CDATA[localhost2]]></host> 
     <username><![CDATA[db2_username]]></username> 
     <password><![CDATA[db2_password]]></password> 
     <dbname><![CDATA[db2_name]]></dbname> 
     <model>mysql4</model> 
     <type>pdo_mysql</type> 
     <active>1</active> 
    </connection> 
    </externaldb2_database> 
</resources> 

+2

Cảm ơn Jonathan đã trả lời nhanh chóng. Tuy nhiên, tôi muốn tìm nạp dữ liệu theo cách của Magento (sử dụng/tạo các mô hình Magento). Sau khi thêm nút externaldb2, làm thế nào tôi có thể sử dụng nó trong các mô hình Magento. Như trong liên kết ví dụ, nút externaldb được sử dụng để xác định mô hình. Làm thế nào tôi có thể xác định mô hình cho externaldb2 tương tự? –

+0

@chapagain, làm điều tương tự, đặt mô hình trong mô-đun khác, trong mô-đun thiết lập cơ sở dữ liệu thứ 2 làm tài nguyên của bạn và bạn có thể làm những gì bạn đang cố gắng ... chỉ cần gọi mô hình từ mô-đun thứ 2 qua 1 – sucitivel

4

Bạn có thể xác định các nguồn lực được sử dụng trong tập tin etc/config.xml của mô-đun, vì vậy mà một module sẽ luôn luôn sử dụng một nguồn dữ liệu nào đó hoặc bạn có thể chỉ định trong xml cấu hình toàn cầu như mô tả của câu trả lời trước, sau đó kết nối này sẽ được sử dụng theo mặc định.

Bạn có thể thay đổi các nguồn lực trong mã của bạn:

$resource = Mage::getSingleton(‘core/resource’); 
$conn  = $resource->getConnection(‘externaldb2_read’); 
0

Theo như tôi có thể biết, bạn không thể có mô hình kết nối với nhiều nguồn cơ sở dữ liệu từ cùng một mô-đun.

Điều tôi đã làm là tạo một mô-đun giả song song, chỉ chứa mô hình cần kết nối với cơ sở dữ liệu thay thế. Vì vậy, mô-đun thực hiện tất cả công việc nằm trong một nhánh và mô-đun giả để nói chuyện với cơ sở dữ liệu khác là riêng biệt. Giải quyết vấn đề đẹp mắt, mặc dù nó không phải là giải pháp thanh lịch nhất ... nhưng nó không phải là ít thanh lịch nhất hoặc là

Các vấn đề liên quan