Cakephp SaveAll具有多个关系模型

时间:2011-12-20 23:18:24

标签: php cakephp

我正在尝试正确使用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但是它没有用......

这个问题有好办法吗?

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'] );

在我看来,问题是你的用户表未选择。