0
我在我的應用程序上嘗試了一些新功能,因爲之前的操作方式並非真正最佳,可以在貨幣表中無限次地重複貨幣,這不是我真正想要的希望未來(考慮可擴展性和未來增長)。Relationship,crud silex and propel orm
所以我繼續努力,閱讀文檔上,並在ORM Cheatsheet得到了許多一對多(我想不完全是,但它的確定,因爲它的工作再次擴展性和未來發展的思考)
<xml>
<table name="countries">
<column name="id" type="INTEGER" required="true" primaryKey="true" autoIncrement="true" />
<column name="name" type="VARCHAR" size="128" required="true" />
<column name="country_code" phpName="CountryCode" type="VARCHAR" size="7" required="true" />
<column name="status" phpName="Status" type="BOOLEAN" required="true" defaultValue="false" />
<unique name="IX_UQ_banks_id">
<unique-column name="id"/>
</unique>
<unique name="IX_UQ_currencies_id">
<unique-column name="id"/>
</unique>
<behavior name="timestampable" />
<behavior name="soft_delete" />
<behavior name="versionable" />
</table>
<table name="currencies">
<column name="id" type="INTEGER" required="true" primaryKey="true" autoIncrement="true" />
<column name="name" phpName="Name" type="VARCHAR" size="128" required="true" />
<column name="code" phpName="Code" type="VARCHAR" size="7" required="true" />
<column name="symbol" phpName="Symbol" type="VARCHAR" size="12" required="true" />
<unique name="IX_UQ_countries_id">
<unique-column name="id"/>
</unique>
<behavior name="timestampable" />
<behavior name="soft_delete" />
</table>
<table name="country_has_currency" isCrossRef="true">
<column name="countries_id" type="INTEGER" required="true" primaryKey="true" />
<column name="currencies_id" type="INTEGER" required="true" primaryKey="true" />
<foreign-key
foreignTable="countries"
defaultJoin="Criteria::LEFT_JOIN"
onDelete="setnull"
onUpdate="cascade"
phpName="Countries">
<reference local="countries_id" foreign="id" />
</foreign-key>
<foreign-key
foreignTable="currencies"
defaultJoin="Criteria::INNER_JOIN"
onDelete="setnull"
onUpdate="cascade">
<reference local="currencies_id" foreign="id" />
</foreign-key>
</table>
```
我似乎無法找到的是插入新記錄後保存此對象的正確方法。 由於我正在寫的代碼我可以得到貨幣一個國家有使用symfony2國際組件(im使用silex tho),所以問題出現在這裏:
添加新的國家,獲取貨幣,檢查是否貨幣如果存在,則與現有貨幣和新國家建立關係,如果不存在,則插入新的國家和新貨幣。