2012-11-30 34 views
10

將PropelORM設置爲與多個數據庫一起使用時,我遇到了一些問題。我在文檔中找不到任何有用的東西。PropelORM v1多個數據庫

  1. 從多個數據庫中生成模式

    我更願意做出改變數據庫模式,然後再運行

    $ propel-gen . reverse 
    

    得到schema.xml中。如果我的系統包含多個數據庫會怎麼樣?它可以生成多個模式嗎?我知道從文檔buildtime-conf.xml必須創建,但它對我沒有任何幫助。

  2. 生成類

    比方說,我創建了不同的模式blog.schema.xmlplatform.schema.xml。是否有可能:

    1. 對每個模式都有不同的類前綴?在build.properties我可以設置propel.classPrefix,但這將工作全局爲每個模式。

    2. 爲每個模式有不同的項目名稱?再次在build.properties我可以設置propel.project,這將在classes目錄中創建一個特定的目錄。現在所有的班級都會去同一個地方。如果我將在兩個模式中使用相同的表名,則一個類將覆蓋另一個類。

我可以來我自己的解決方案是有2名不同的目錄設置爲某個特定數據庫,但是我寧願更優雅的解決方案。

+1

這些資源可能會有所幫助: http://propelorm.org/cookbook/using-sql-schemas.html http://trac.propelorm.org/ticket/940 –

+0

謝謝霧。文件很清楚,但是當我開始遵循指南時,它們都以不同的方式運作。手冊中提到了關於propel.schema.autoPrefix參數。它不會爲我自動添加前綴類。它爲我做的唯一的事情是當propel.schema.autoNamespace設置爲TRUE時,它將它覆蓋爲FALSE(可能不是直接的,但這是結果)。 –

+0

軟件包http://propelorm.org/cookbook/multi-component-data-model.html也不按照文檔工作。它說,如果你在DATABASE級別上設置包,它將在classes/my_project/package_name中創建文件,而對於我而言,它不會創建my_project目錄,所有包直接進入類。爲了清楚我從git獲得了最新版本的propel1。 –

回答

1

你可以從你的模式發佈<database>行嗎?

只要你具備以下條件:

<database package="blog" name="blog" defaultIdMethod="native"> 

裏面你blog.schema.xml它應該產生一個新的目錄給你。如果你讓推遲爲你加載這些東西,你是對的,你會碰到碰撞,所以我只是在schema.xml(這可能不是處理事情的最有效的東西)手動預先填寫某些東西給我的表。

但你可以這樣做:

  1. 在blog.schema.xml:

    <table name="users" phpName="blogUsers" idMethod="native"> 
    
  2. 在platform.schema.xml:

    <table name="users" phpName="platformUsers" idMethod="native"> 
    

這對我來說很好。