CakePHP - Пользовательская ассоциация объектов hasOne - Использование таблицы соединений вместо внешних ключей в таблице?

В CakePHP я пытаюсь создать отношение $hasOne, но не могу добавить внешний ключ к таблицам (по устаревшим причинам). Можно ли как-нибудь создать таблицу соединений (object1_object2) и связать их вместе вот так? Я хочу использовать мощную функциональность объектных отношений Cake, поэтому, если есть способ сделать эту пользовательскую ассоциацию постоянной во всей модели, не создавая всегда собственный массив $options для каждого find(), это было бы здорово. (Может быть, bindModel в модели initalize()?)

Спасибо!


person Harry    schedule 22.09.2010    source источник


Ответы (2)


Я считаю, что это то, что вы ищете. http://www.packtpub.com/article/working-with-simple-associations-using-cakephp вот еще один http://debuggable.com/posts/modeling-relationships-in-cakephp-faking-rails-throughassociation:480f4dd6-b990-485e-abe4-4baccbdd56cb

person Bot    schedule 22.09.2010
comment
Похоже, это более стандартные объектные отношения - мне нужно построить собственное отношение без использования внешнего ключа, который требуется для Cake. Я хотел бы использовать таблицу соединений для отношений hasOne. - person Harry; 22.09.2010

Если вы хотите использовать таблицу соединений, я считаю, что вам придется использовать отношение hasAndBelongsToMany (HABTM), даже если у вас никогда не будет «многих». Очевидно, что данные будут вести себя иначе, чем стандартная связь hasOne, но, по крайней мере, связь будет существовать.

Может быть способ обойти это, используя поле «условия» отношения hasOne, но я подозреваю, что вам все равно нужно указать внешний ключ (или он все равно будет по умолчанию «object2_id»), и он, вероятно, все равно попытается выполнить присоединиться на основе этого внешнего ключа.

person death_au    schedule 23.09.2010