CakePHP的关联错误? 将不保存关联表(CakePHP Associations error

2019-10-17 19:52发布

我创建了一个用户配置文件,用户可以添加自己的信息。 因此,在URL部分,我希望他们能够把他们的其他环节,如Facebook,www.facebook.com/user等。

但是,当我点击保存什么更新?

下面是用户的型号:型号/ user.php的

<?php
class User extends AppModel {

    public $name = 'User';

    public $hasMany = array (
    'UserWeb'=>array(
        'className'=>'UserWeb',
        'foreignKey'=>'user_id'
        )
    );
}
?>

对于UserWeb型号:型号/ UserWeb.php

<?php
class UserWeb extends AppModel {

public $name = 'UserWeb';

public $belongsTo = array('User' =>
    array('className'  => 'User',
        'conditions' => '',
    'order'      => '',
    'foreignKey' => 'user_id'
    )
    );
}
?>

用户控制器:

$this->User->id = $this->Auth->user('id');
if ($this->request->is('post')) {
    if ($this->User->save($this->request->data, array('validate' => false))) {
        $this->Session->setFlash('Profile updated succsessefully!',
                                     'default', array('class' => 'okmsg'));

    $this->redirect($this->request->here);
    } else {
      $this->Session->setFlash('Profile could not be saved. Please, try again.',
                                       'default', array('class' => 'errormsg'));
    }
}

和视图形式:

<?php
    echo $this->Form->create();
echo $this->Form->input('UserWeb.title',
         array('label'=>false,'placeholder'=>'Title'));
echo $this->Form->input('UserWeb.url',
         array('label'=>false,'placeholder'=>'Enter URL'));
echo $this->Form->end('Save');
?>

任何人都可以帮助吗? 我试图找到大量的时间解决。 当我提交表单也不会在user_webs表存储新的信息。

和BTW这里是表:

CREATE TABLE `user_webs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) DEFAULT '0',
  `title` varchar(128) DEFAULT NULL,
  `url` varchar(128) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  `modified` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `web` (`user_id`),
  CONSTRAINT `web` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8

Answer 1:

您正在尝试关联的模型的数据。 和您的主模型中没有数据保存。

你可以在这里采取两种办法,

  1. 您现在的方式,以User的信息,并让他们提供UserWeb来自同一形式的信息。 使用将提供信息作为注册的一部分。 为此,您应该是指保存相关模型数据-白水()

  2. 方式二,具有用户注册时提供的信息,让他们加入UsersWeb以后。 (由后来我的意思是用户可以以相同的形式注册时对其进行更新,但没有)。 对于这种使用UserWeb 。 具有相同的形式出现,从/yourapp/UsersWebs/add 。 你将不得不提供user_id 。 这将是更精致。

PS:我强烈建议你去通过保存数据一次。 它几乎不会带你10分钟,我相信你以前做过这一点,但在遇到问题后不遗余力另一个10分钟,将帮助你了解这些东西作为你的手背。



文章来源: CakePHP Associations error? Won't save associated table