У меня есть отчет класса, который имеет отношение ownToMany к метрике. Отчет также имеет отношение ownTo к метрике.
Обычно модель, возвращаемая отношением ownTo, совпадает с одной из моделей в отношении ownToMany. Когда это правда, я бы хотел, чтобы каждое из двух отношений фактически смотрело на один и тот же экземпляр объекта (это также экономит дополнительное путешествие в базу данных).
Итак, в общих чертах - есть ли способ заставить одно отношение сначала проверить другое, чтобы увидеть, была ли уже загружена модель, и если да, указать на этот объект, а не создавать новый.
Я попытался поместить некоторый код в метод отношения ownTo для Metric, но не могу обойти тот факт, что он должен возвращать экземпляр ownTo, которому нужны различные вещи, передаваемые в качестве аргументов конструктора (например, объект запроса), которые не уместно в том случае, если модель уже была загружена в отношение ownToMany.
Я подумал о том, чтобы отказаться от отношения ownTo и добавить данные по горизонтали в сводную таблицу для отношения ownToMany, но это не требуется отношения «многие ко многим», так что это кажется немного неправильным.
Спасибо!
Джефф
belongsTo
отношения. ПреимуществоbelongsToMany
в том, что он гибкий и позволяет связывать 0, 1 или несколько записей. Недостаток в том, что для управления им нужна дополнительная таблица (сводная таблица). В любом случае вам понадобится эта сводная таблица, так что просто придерживайтесьbelongsToMany
и избавьтесь от путаницы. Если вы настроены на оба, думаю, я понял, как делать то, что вы хотите делать. - person user1669496   schedule 18.05.2015belongsTo
. Я отправлю быстрый ответ, который, как мне кажется, должен сработать. - person user1669496   schedule 18.05.2015UNIQUE
в MySQL, чтобы обеспечить соблюдение только одной модели, отмеченной как особая. - person Jim Rubenstein   schedule 19.02.2016