CakePHP имеет одно из условий ассоциации - PullRequest
2 голосов
/ 09 августа 2011

Привет. Я строю свою модель User, чтобы в ней было только одно изображение профиля, которое является примером модели Image.Я хочу, чтобы условия hasOne включали только изображение, где Image.id равен столбцу «picture» в пользовательской таблице.Я знаю, что что-то не так ... вот соответствующая часть кода.

    var $hasOne = array(
            'ProfileImage' => array(
                    'className' => 'Image',
                    'conditions' => array('ProfileImage.id' => 'User.picture'),
                    'dependent' => false,
                    'foreignKey' => 'user_id',
            )
    );

Что не так с моими условиями?Как мне указать ProfileImage.id, чтобы он был равен столбцу изображения в модели пользователя?Спасибо!

1 Ответ

4 голосов
/ 09 августа 2011

Если внешний ключ (picture) находится в модели пользователя, то ваша ассоциация должна быть «Пользователь принадлежит образу». Если изображение может использоваться только одним пользователем за раз, обратным будет Image hasOne user. Если изображение может использоваться несколькими пользователями, это будет Image hasMany User.

Но если изображение может использоваться только одним пользователем за раз, лучшей структурой данных будет добавление столбца user_id в таблицу images. Тогда у вас есть пользователь hasOne Image / Image принадлежит к отношениям пользователя.

Ни для чего вам не нужно conditions, только foreignKey.


После выяснения проблемы ваше состояние должно выглядеть следующим образом:

'conditions' => array('ProfileImage.id = User.picture')

В противном случае Cake считает, что ProfileImage.id должно равняться строке "User.picture".

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