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

0

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

пользователь имеет идентификатор (первичный) и поля местоположения/столбцы

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

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

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

Теги:
cakephp

1 ответ

1
Лучший ответ

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

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

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

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

выводит

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

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

  • 0
    попробую и как насчет mysql часть моего вопроса
  • 1
    ты пробовал это? Разве вы не думаете, что если бы MySQL не смог этого сделать, я бы сказал, вместо того, чтобы давать вам много кода. Вы можете присоединиться к чему угодно
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню