Отношение модели Cakephp - PullRequest
       2

Отношение модели Cakephp

0 голосов
/ 28 сентября 2010

У меня есть две таблицы пользователь и местоположение

У пользователя есть id (основной) и поля / столбцы местоположения

местоположение имеет идентификатор (основной) и столбец города

Теперь я хочу связать две таблицы по user.location с location.city Как я могу это сделать, учитывая, что город не является первичным ключом, а уникален. Я использую CakePHP 1.2.

Также в mysql я могу связывать / объединять таблицы без первичного ключа, но с уникальным ключом

1 Ответ

1 голос
/ 28 сентября 2010

Либо в модели, либо с привязкой «на лету» можно создавать соединения с не первичными ключами следующим образом

public $hasOne = array(
    'RelatedModel' => array(
        'className' => 'RelatedModel',
        'foreignKey' => false,
        'conditions' => array(
            '`MainModel`.`random_field` = `RelatedModel`.`some_field`'
        )
    )
}

Хитрость заключается в том, чтобы установить ForeignKey в значение false, чтобы торт ничего не пробовал, а затем установить условия вручную, также обратите внимание, что поля экранируются и в одной строке выглядят как

'`MainModel`.`random_field`' => '`RelatedModel`.`some_field`'

будет выводить

SELECT ..... FROM ... LEFT JOIN ... ON (`MainModel`.`random_field` = '`RelatedModel`.`some_field`')

, который попытается соединить строки, которые == 'RelatedModel. some_field' (фактическая строка)

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