Отношения в учении 2 - PullRequest
       2

Отношения в учении 2

4 голосов
/ 19 июля 2011

Я не понимаю ассоциаций в учении. Я хочу знать, в чем разница между однонаправленными и двунаправленными отношениями. а что есть в учении 2

1 Ответ

15 голосов
/ 12 августа 2011

Двунаправленные и однонаправленные отношения

Двунаправленные и однонаправленные ссылки о ссылках в ваших объектах PHP.

Как вы можете видеть здесь , схемы базы данных для однонаправленных и двунаправленных ссылок фактически одинаковы.Разница в следующем:

  • Однонаправленный: объекты класса A относятся к объектам класса B, но не наоборот.
  • Двунаправленный: объекты класса A относятся к объектам класса B иобъекты класса B ссылаются на объекты класса A

Обратная и владеющая стороны

Концепция владения и обратной стороны заключается в сохранении изменений вашей объектной модели в базе данных. Здесь - подробное объяснение.

Короче говоря, Doctrine 2 не отслеживает изменения в объектной модели.Допустим, у вас есть два класи: Parent и Child.Класс Parent имеет коллекцию children.Класс «Ребенок» имеет ссылку parent.Следующий код сделает вашу модель данных несовместимой:

$parent = new Parent();
$child = new Child();
$parent->children->add($child);

Плохо иметь открытые свойства в классах сущностей, и это крайне нежелательно, но по причинам демонстрации это нормально.Итак, следующий код добавляет $child к $parent, но не устанавливает $child->parent.Модель предметной области становится непоследовательной (и поэтому руководство Doctrine рекомендует инкапсулировать логику ассоциации в модели сущностей ), но все еще возможно сохранить эти объекты в БД.

Вот где концепция владения иобратные стороны становятся важными.Доктрина сохранит отношения сущностей в соответствии с состоянием владеющей стороны .Таким образом, в нашем примере отношение $parent => $child будет:

  • Сохранено, если сторона-владелец Parent class
  • Игнорируется, если сторона-владелец Child класс

Обратите внимание, что сторона-владелец помечена аннотацией отношения inversedBy .

Существует рекомендация при выборе владельца иобратные стороны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...