Доктрина для создания ограничения внешнего ключа, но не для создания объекта - PullRequest
0 голосов
/ 24 февраля 2019

Таблица some_type используется только для ограничения допустимых значений для foo.type значениями в some_table.type, и объект SomeType никогда не будет создан.Foo должно иметь свойство type, но не свойство someType.Если я удаляю <many-to-one target-entity="SomeType">...</many-to-one>, Foo#someType удаляется по желанию, но внешний ключ удаляется из схемы.Как мне указать Doctrine сохранить внешний ключ, но не генерировать Foo#someType?

SomeType

<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping https://www.doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
  <entity name="SomeType" table="some_type">
    <id name="type" type="string" column="type" length="8"/>
  </entity>
</doctrine-mapping>

Foo

<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping https://www.doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
  <entity name="Foo" table="foo">
    <indexes>
      <index name="fk_foo_some_type_idx" columns="type"/>
      <index name="fk_foo_bar1_idx" columns="bar_id"/>
    </indexes>
    <id name="id" type="integer" column="id">
      <generator strategy="IDENTITY"/>
    </id>
    <field name="type" type="string" column="type" length="8"/>
    <many-to-one target-entity="SomeType">
      <join-columns>
        <join-column name="type" referenced-column-name="type"/>
      </join-columns>
    </many-to-one>
    <many-to-one field="bar" target-entity="Bar" inversed-by="foos" fetch="LAZY">
      <join-columns>
        <join-column name="bar_id" referenced-column-name="id" nullable="false"/>
      </join-columns>
    </many-to-one>
  </entity>
</doctrine-mapping>
...