Я пытаюсь что-то новое в своем приложении, поскольку способ, которым я это делал раньше, не был действительно оптимальным, можно было бесконечно повторять валюты в валютной таблице, что не то, что я действительно хотят в будущем (думая о масштабируемости и будущем росте).отношения, crud silex и 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>
`` `
Что я не могу найти, это правильный способ сохранить эти объекты после ввода новых записей. из-за кода, который я пишу, я могу получить валюту в стране, использующей компонент Intl symfony2 (im, используя silex tho), поэтому проблема возникает здесь:
Добавить новую страну, получить валюту, проверить валюту существует, если да, создайте отношения с существующей валютой и новой страной, если она не существует, вставьте новую страну и новую валюту.