我正在尝试正确使用saveAll来更新多个关系模型的用户记录。下面是我用来提交saveAll函数的数组:
Array
(
[InterestsubsUser] => Array
(
[0] => Array
(
[interestsub_id] => 3
[user_id] => 1
)
[1] => Array
(
[interestsub_id] => 4
[user_id] => 1
)
[2] => Array
(
[interestsub_id] => 5
[user_id] => 1
)
)
[User] => Array
(
[relationship_status_id] => 1
[ethnicity_id] => 7
[age] => 27
[height_id] => 1
[weight_id] => 1
[image] => testing
)
[LookingforsUser] => Array
(
[0] => Array
(
[lookingfor_id] => 2
[user_id] => 1
)
[1] => Array
(
[lookingfor_id] => 3
[user_id] => 1
)
[2] => Array
(
[lookingfor_id] => 4
[user_id] => 1
)
[3] => Array
(
[lookingfor_id] => 5
[user_id] => 1
)
)
[SocialLinksUser] => Array
(
[0] => Array
(
[social_link_id] => 1
[user_id] => 1
)
[1] => Array
(
[social_link_id] => 2
[user_id] => 1
)
[2] => Array
(
[social_link_id] => 3
[user_id] => 1
)
)
)
SaveAll函数返回true,但是我无法在与User表的HABTM关系的关系数据库表中看到任何更新的值/行。此外,它正在插入新的用户行,但我想更新用户。我试过$ this-> User-> id = 1但是它没有用......
这个问题有好办法吗?
答案 0 :(得分:0)
您是否尝试使用$this->User->id = 1
从用户表中读取值?因此,您可以使用$this->read
说明该问题不是问题
尝试从用户表中读取数据后,尝试在表单中添加隐藏的id字段。如果无法再次更新数据,请再次尝试saveall。然后尝试
如果保存所有不工作,那么我在我的cakePHP项目中使用了folwowing函数>在你的控制器中尝试这个。更改为
你有这个领域。
function _Fill_user_array($user=array(),$user_type=null,$mode=null){
if( ! array_key_exists('User',$user ) ){ return; }
//logic for update
$this->data['User']['updated_date'] =date('Y-m-d');
$this->data['User']['updated_by'] =$this->Auth->user('id');
if($mode==null){
// logic for new entry
$this->data['User']['registered_date'] = date('Y-m-d');
$this->data['User']['created_by'] =$this->Auth->user('id');
$this->data['User']['user_type'] = $user_type;
}
}
在您的更新操作中,您可以调用以下
`$this->_Fill_user_array($this->data,null,'UPDATE');` This will update you data
或者您可以使用以下方法在将数据保存到[InterestsubsUser]之后仅保存用户表。
$this->User->id = ['ID you wanted to select'];
$this->User->save( $this->data['User'] );
在我看来,问题是你的用户表未选择。