2013-11-02 2 views
0

Я пытаюсь использовать ассоциацию HABTM в CakePHP для объединения нескольких записей из той же модели в одну запись из другой модели.CakePHP - HABTM Несколько записей с той же моделью

Модели, которые я пытаюсь связать, - это Пользователь и ставка. Модель пользователя довольно стандартная, сложная модель ставки. У записи ставки есть, помимо прочего, ID, плюс столбец для user_1_id и user_2_id. У каждой ставки есть два участника.

Сначала я думал, что хранение этих двух в одной и той же записи в таблице ставок будет в порядке, с помощью простого hasMany объединения в пользовательской модели, наряду с запросом искателя, как у меня есть два внешних ключей:

public $hasMany = array(
    'Bet' => array(
     'className' => 'Bet', 
     'foreign_key' => false, 
     'finderQuery' => 'SELECT * 
          FROM `bets` as `Bet` 
          WHERE `Bet`.`user_1_id` IN ({$__cakeID__$}) 
          OR `Bet`.`user_2_id` IN ({$__cakeID__$})', 
    ), 

Однако, как я уже сказал, я столкнулся с некоторыми трудностями, и казалось, что отношения работают только в одном направлении (т. Е. Я могу просматривать данные пользователя при работе с отдельной ставкой, но при работе с пользователями я не могу связываться с ставкой Детали).

Итак, теперь я считаю, что мне потребуется связь HABTM с таблицей соединений, что я не уверен в том, как я собираюсь заставить ее работать, чтобы хранить несколько записей одной и той же модели, а также один из другого в таблице ссылок.

Это заставляет мою голову болеть, поэтому любые внешние перспективы или советы действительно были бы действительно полезны, Спасибо!

ответ

0

Мне удалось это исправить. Кажется, у меня были ассоциации. Я наткнулся на это в книге «Торт»: http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#multiple-relations-to-the-same-model

Не знаю, как я раньше этого не осознавал, поскольку я использую ту же самую связь в другом месте приложения, чтобы обрабатывать систему последователей. Ключ должен использовать псевдоним для модели, как это подробно объясняется в руководстве.

Надеюсь, это поможет кому-то еще в будущем!

Смежные вопросы