Добавление изображения профиля в cakephp - PullRequest
0 голосов
/ 21 сентября 2011

У меня сейчас 2 базы данных.images & users.

В моей модели пользователя у меня есть:

    var $belongsTo=array(
    'Image'=>array('className'=>'Image')
);

В моем изображении Model у меня есть:

    var $hasOne =array(
    'Users'=>array('className'=>'User')
);

Я хочу добиться следующего ниже:В моей базе данных пользователей есть поле 'image_id', и оно связано с полем моей базы данных изображений 'id'.Пример: база данных изображений id = 1 база данных пользователей image_id = 1

Ниже приведен код функции add в моем image_controller.Я хочу добавить определенное изображение и хочу, чтобы идентификатор изображения сохранялся в базе данных пользователей image_id.Как мне этого добиться?

    function add() {
    $this->layout = "mainLayout";      
    if (!empty($this->data)) {
        $this->Image->create();

        if ($this->Image->save($this->data)) {

            $user_id = $this->User->getUserInfo($this->Auth->user('id'));
            $this->data['User']['image_id'] = $user_id;

            $this->Session->setFlash('The image has been saved', true);
            $this->redirect(array('controller' => 'Users', 'action' => 'profile'));
        } else {
            $this->Session->setFlash('The image could not be saved. Please, try again.', true);
        }
    }

    $current_user_pic =$this->User->getUserInfo($this->Auth->user('id'));
    $this->set(compact('current_user_pic')); 
}

1 Ответ

1 голос
/ 21 сентября 2011

сделать его User hasOne Image (пользователь hasOne изображения просто семантически странный). Поэтому, когда вы сохраняете запись изображения, просто установите 'user_id' в $ this-> Auth-> user ('id')) перед сохранением.

Кроме того, не используйте var $uses = array('User','Image'); Когда вы уже установили отношение, вы можете получить доступ к модели изображения через модель пользователя: $this->User->Image->save($this->data)

Редактировать: ОК, поэтому удалите поле image_id в таблице пользователей, добавьте поле user_id в таблицу изображений. Если вы используете команду bake для генерации кода, возможно, вы захотите сохранить свой код в моделях, контроллерах и представлениях для пользователей и изображений, а затем повторно испечь эти 2. Объявите отношения: пользователь hasOne Изображение и изображение принадлежит пользователю (я предполагаю знаю, как это сделать).

При сохранении изображения установите $this->data['Image']['user_id'] = $this->Auth->user('id') до $this->User->Image->save($this->data)

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