2011-10-30 21 views
0

我正在使用Propel開發一個系統,用戶可以在這個系統中開發自己的模式,所以我在看一些「邊緣案例」。我遇到了一個我認爲Propel應該禁止的模式,但似乎確實如此。任何人都可以爲此提出一個用例嗎?Propel中不完整的關鍵引用是否有用?

<?xml version="1.0" encoding="UTF-8"?> 
<database name="test" defaultIdMethod="native"> 
    <table name="test_event"> 
     <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" /> 
     <column name="name" type="varchar" size="50" required="true" /> 
     <column name="description" type="varchar" size="250" /> 
     <column name="location" type="varchar" size="250" /> 
     <column name="nearest_city" type="varchar" size="100" /> 
     <column name="organiser_id" type="integer" required="true" /> 
     <!-- This FK is incomplete --> 
     <foreign-key foreignTable="test_organiser"> 
      <reference local="organiser_id" foreign="id" /> 
     </foreign-key> 
    </table> 

    <table name="test_organiser"> 
     <!-- Has composite PK --> 
     <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" /> 
     <column name="secondary" type="integer" required="true" primaryKey="true" /> 
     <column name="name" type="varchar" size="50" required="true" />  
     <column name="email" type="varchar" size="100" /> 
    </table> 
</database> 

正如您所看到的,事件表具有對組織器表的不完整外部引用。我以爲Propel會在構建時檢測到它並將它踢出去 - 但顯然不是!我看不出爲什麼這會有用 - BaseTestEvent中的setTestOrganisergetTestOrganiser方法僅涉及組合PK的一部分(因爲當然,事件方只知道organiser_id部分)。

Propel 1.6.1,PHP 5.2.17。

回答

0

不,他們沒用。目前,Propel沒有檢查這個用例。我已經爲它設置了created a issue,所以當我們實施它時,您不會再次碰到它。

+0

謝謝Marc,感謝。我本人自己創造了一張票,但首先要檢查。 – halfer

+0

嗨馬克,快速脫離主題。 Propel2目前的狀態如何?今年我看到了一個相當常見的提交流,所以我認爲人們正在使用它,並且已經發現它已經很有用。可能會出現另一個alpha或beta版嗎? – halfer

+0

@halfer是另一個版本可能是一個好主意,因爲許多人使用它。不幸的是目前較少的時間:( –

相關問題