【问题标题】:Cakephp SaveAll with multiple relational models具有多个关系模型的 Cakephp SaveAll
【发布时间】:2011-12-20 23:18:23
【问题描述】:

我正在尝试正确使用 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,这很好,但是我在与用户表的 HABTM 关系的关系数据库表中看不到任何更新的值/行。它还在插入新的用户行,但我想更新用户。我试过 $this->User->id = 1 但它不起作用...

有没有解决这个问题的好方法?

【问题讨论】:

    标签: php cakephp


    【解决方案1】:

    您是否尝试使用$this->User->id = 1 从用户表中读取值?所以您可以说使用$this->read 的代码不是问题所在 在您可以从用户表中读取数据之后,尝试在表单中添加一个隐藏的 id 字段。之后,如果您无法再次更新数据,请再次尝试 saveall。然后尝试 如果全部保存不起作用,那么我在我的 cakePHP 项目中使用了以下功能>在你的控制器中尝试这个。更改为 您拥有的字段。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-29
      • 2011-03-05
      相关资源
      最近更新 更多