2010-09-27 54 views
4

摘要外部數據庫:臨時連接用的Symfony /原則

我希望能夠對外部數據庫運行查詢的時候抓住一些數據需要用戶登錄我不想這樣現場要做什麼其他與外部數據庫。長期來看,它可能需要能夠推回數據,但具體而言,我不希望symfony嘗試構建外部數據庫的模式,它應該讓它獨立並允許連接不時。

詳情:

我試圖創建另一個symfony應用程序的數據庫中的臨時連接,我似乎無法弄清楚如何做到這一點。

我有一個現有的symfony網站是設置和運行。我試圖爲這個主站點的用戶創建一種管理系統。管理系統將爲每個選擇它的用戶分別進行部署,因此它也將擁有與其相關的自己的數據庫。但是,這種管理系統需要訪問主站點系統中的2或3個表格。

我已經嘗試在管理系統的databases.yml中添加單獨的條目來創建到兩個數據庫的連接,但是無論何時我構建所有數據庫,它都希望將我的模式放到兩個數據庫中。

我已經拿出拼勁連接最好的辦法:管理我的管理系統中的所有表,並把連接:main_site從主站點的所有表。但是,這需要我在管理系統和主站點上維護yml文件,以確保它們保持最新狀態。

我希望這一點更加清楚。

感謝您的幫助:d

回答

5

對於沒有使用DQL在遠程站點上,只需打開通過Doctrine_Manager連接能力的臨時連接:

$conn = Doctrine_Manager::getInstance()->openConnection('mysql://username:[email protected]/database', 'connection 2', false); 

確保第三個參數是假的這樣它就不會成爲當前的連接。然後,您可以使用PDO運行查詢的連接:

$conn->exec('SELECT * FROM table WHERE conditon = ?', array('value')); 

如果你希望能夠使用DQL和遠程模式,你必須做你介紹的方式:定義了兩個連接和維護架構在兩個地方(你的版本控制應該能夠處理這個)。

+0

這聽起來像我需要的答案。由於它只是一個非常少的查詢,我不認爲我需要* DQL來保持它的清潔。我可能需要最終包含這兩種模式,但這是一種痛苦,因爲各種插件都有自己的模式等。謝謝! – gregghz 2010-09-29 17:50:55

+0

所以事實證明,我得到這個錯誤:調用未定義的方法userActions :: parseDsn。 userActions顯然是我在運行代碼時所採取的行動。唯一正在運行的代碼幾乎與您設置$ conn所顯示的代碼相同。 – gregghz 2010-09-29 22:41:57

+0

我需要使用Doctrine_Manager :: getInstance() - > openConnection()來避免錯誤 – gregghz 2010-09-29 23:38:28