Hi,
I am creating a user edit form consisting of five related entities as 
follows:

Buyers belongsTo Users
Genres belongsToMany Buyers
Buyers belongsToMany Genres
Users hasOne Buyers
Users hasMany Addresses
Addresses belongsTo Users
Addresses belongsTo Countries
Countries hasMany Addresses

I create Buyers entity and sending the data to the view as follows:

$Buyer = $this->Buyers-> get($id ['contain' => ['Users', 'Users.Addresses', 
'Users.Addresses.Countries', 'Genres']]);


Then send to the edit.ctp:

$Countries = $this->Buyers->Users->Addresses->Countries-> find('list');

$Genres = $this->Buyers->Genres->find('list' ['order' => ['description_pt' 
=> 'ASC']]);

$This->set(compact ('buyer', 'countries', 'genres'));

$This->set( '_serialize'['buyer', 'countries', 'genres']);


The form data is correctly presented, which shows that the cake recognized 
all fields as are in the database and they are filled with the correct data.

When sending the data they appear so (using debug):


object(App\Model\Entity\Buyer) {

    'new' => false,
    'accessible' => [
        'cpf' => true,
        'gender' => true,
        'birthdate' => true,
        'newsletter' => true,
        'user_id' => true,
        'user' => true,
        'genres' => true
    ],
    'properties' => [
        'id' => (int) 68,
        'cpf' => '01847348785',
        'gender' => 'Masculino',
        'birthdate' => object(Cake\I18n\Time) {

            'time' => '1971-03-23T00:00:00+0000',
            'timezone' => 'UTC',
            'fixedNowTime' => false
        
        },
        'newsletter' => 'Sim',
        'user_id' => (int) 164,
        'genres' => [
            (int) 0 => object(App\Model\Entity\Genre) {

                'new' => false,
                'accessible' => [
                    'description_pt' => true,
                    'description_en' => true,
                    'description_es' => true,
                    'buyers' => true,
                    'records' => true
                ],
                'properties' => [
                    'id' => (int) 3,
                    'description_pt' => 'Bossa-Nova',
                    'description_en' => 'Bossa-Nova',
                    'description_es' => 'Bossa-Nova',
                    '_joinData' => object(App\Model\Entity\BuyersGenre) {

                        'new' => false,
                        'accessible' => [
                            'genre_id' => true,
                            'buyer_id' => true,
                            'genre' => true,
                            'buyer' => true
                        ],
                        'properties' => [
                            'genre_id' => (int) 3,
                            'id' => (int) 66,
                            'buyer_id' => (int) 68
                        ],
                        'dirty' => [],
                        'original' => [],
                        'virtual' => [],
                        'errors' => [],
                        'repository' => 'BuyersGenres'
                    
                    }
                ],
                'dirty' => [],
                'original' => [],
                'virtual' => [],
                'errors' => [],
                'repository' => 'Genres'
            
            }
        ],
        'user' => object(App\Model\Entity\User) {

            'new' => false,
            'accessible' => [
                'name' => true,
                'password' => true,
                'username' => true,
                'status' => true,
                'session' => true,
                'ip' => true,
                'role' => true,
                'login_error' => true,
                'survey_id' => true,
                'survey' => true,
                'other' => true,
                'addresses' => true,
                'buyers' => true,
                'carts' => true,
                'classifieds' => true,
                'last_visited_ids' => true,
                'orders' => true,
                'refer_friends' => true,
                'searches' => true,
                'sellers' => true
            ],
            'properties' => [
                'id' => (int) 164,
                'name' => 'Paulo Terra Matias',
                'password' => 
'$2y$10$JKRUBVNjOon9amTnvKvrDeU4D/ZhVvYpKUDv9op1lC4eRIcP4es8G',
                'username' => 'pte...@gmail.com',
                'created' => object(Cake\I18n\Time) {

                    'time' => '2016-04-09T21:07:28+0000',
                    'timezone' => 'UTC',
                    'fixedNowTime' => false
                
                },
                'modified' => object(Cake\I18n\Time) {

                    'time' => '2016-04-17T21:26:16+0000',
                    'timezone' => 'UTC',
                    'fixedNowTime' => false
                
                },
                'status' => 'Ativo',
                'session' => 'd0a500904fd63a39ccb6d7556210ecfb',
                'ip' => '201.53.143.193',
                'role' => 'Comprador',
                'login_error' => (int) 0,
                'survey_id' => (int) 6,
                'other' => 'sadasdsa',
                'addresses' => [
                    (int) 0 => object(App\Model\Entity\Address) {

                        'new' => false,
                        'accessible' => [
                            'user_id' => true,
                            'country_id' => true,
                            'code' => true,
                            'type' => true,
                            'zipcode' => true,
                            'line1' => true,
                            'line2' => true,
                            'city' => true,
                            'state' => true,
                            'country' => true,
                            'phone' => true,
                            'celphone' => true,
                            'user' => true
                        ],
                        'properties' => [
                            'id' => (int) 29,
                            'user_id' => (int) 164,
                            'code' => (int) 1,
                            'type' => 'Principal',
                            'zipcode' => '22222222',
                            'line1' => 'kjhkj',
                            'line2' => 'jhk',
                            'city' => 'jhkjhkj',
                            'state' => 'hj',
                            'country_id' => (int) 81,
                            'phone' => '',
                            'celphone' => '',
                            'country' => object(App\Model\Entity\Country) {

                                'new' => false,
                                'accessible' => [
                                    'country_name' => true,
                                    'addresses' => true
                                ],
                                'properties' => [
                                    'id' => (int) 81,
                                    'country_name' => 'Haiti'
                                ],
                                'dirty' => [],
                                'original' => [],
                                'virtual' => [],
                                'errors' => [],
                                'repository' => 'Countries'
                            
                            }
                        ],
                        'dirty' => [],
                        'original' => [],
                        'virtual' => [],
                        'errors' => [],
                        'repository' => 'Addresses'
                    
                    }
                ]
            ],
            'dirty' => [],
            'original' => [],
            'virtual' => [],
            'errors' => [],
            'repository' => 'Users'
        
        }
    ],
    'dirty' => [],
    'original' => [],
    'virtual' => [],
    'errors' => [],
    'repository' => 'Buyers'

}




The data that comes from the form after the post:


[
    'user' => [
        'name' => 'Paulo Terra Matias',
        'username' => 'pte...@gmail.com',
        'addresses' => [
            (int) 0 => [
                'phone' => '999999999',
                'celphone' => '',
                'zipcode' => '22222222',
                'line1' => 'kjhkj',
                'line2' => 'jhk',
                'city' => 'jhkjhkj',
                'state' => 'hj',
                'country_id' => '81'
            ]
        ]
    ],
    'cpf' => '01847348785',
    'gender' => 'Masculino',
    'birthdate' => [
        'year' => '1971',
        'month' => '03',
        'day' => '23'
    ],
    'genres' => [
        '_ids' => [
            (int) 0 => '3'
        ]
    ],
    'newsletter' => 'Sim'
]
==========================================

However, after patchEntity the entity Address is marked as 'new' => true,

This makes the cake try to create a new Address record, when in fact, I 
want to edit the current Address record.

What am I doing wrong?



$ Buyer = $ this-> Buyers-> patchEntity ($ buyer, $ this-> request-> data [
'Associated' => [
'Users',
'Users.Addresses'
'Users.Addresses.Countries'
'Genres'
]
]);


object(App\Model\Entity\Buyer) {

        'new' => false,
        'accessible' => [
                'cpf' => true,
                'gender' => true,
                'birthdate' => true,
                'newsletter' => true,
                'user_id' => true,
                'user' => true,
                'genres' => true
        ],
        'properties' => [
                'id' => (int) 68,
                'cpf' => '01847348785',
                'gender' => 'Masculino',
                'birthdate' => object(Cake\I18n\Time) {

                        'time' => '1971-03-23T00:00:00+0000',
                        'timezone' => 'UTC',
                        'fixedNowTime' => false
                
                },
                'newsletter' => 'Sim',
                'user_id' => (int) 164,
                'genres' => [
                        (int) 0 => object(App\Model\Entity\Genre) {

                                'new' => false,
                                'accessible' => [
                                        'description_pt' => true,
                                        'description_en' => true,
                                        'description_es' => true,
                                        'buyers' => true,
                                        'records' => true
                                ],
                                'properties' => [
                                        'id' => (int) 3,
                                        'description_pt' => 'Bossa-Nova',
                                        'description_en' => 'Bossa-Nova',
                                        'description_es' => 'Bossa-Nova'
                                ],
                                'dirty' => [],
                                'original' => [],
                                'virtual' => [],
                                'errors' => [],
                                'repository' => 'Genres'
                        
                        }
                ],
                'user' => object(App\Model\Entity\User) {

                        'new' => false,
                        'accessible' => [
                                'name' => true,
                                'password' => true,
                                'username' => true,
                                'status' => true,
                                'session' => true,
                                'ip' => true,
                                'role' => true,
                                'login_error' => true,
                                'survey_id' => true,
                                'survey' => true,
                                'other' => true,
                                'addresses' => true,
                                'buyers' => true,
                                'carts' => true,
                                'classifieds' => true,
                                'last_visited_ids' => true,
                                'orders' => true,
                                'refer_friends' => true,
                                'searches' => true,
                                'sellers' => true
                        ],
                        'properties' => [
                                'id' => (int) 164,
                                'name' => 'Paulo Terra Matias',
                                'password' => 
'$2y$10$JKRUBVNjOon9amTnvKvrDeU4D/ZhVvYpKUDv9op1lC4eRIcP4es8G',
                                'username' => 'pte...@gmail.com',
                                'created' => object(Cake\I18n\Time) {

                                        'time' => '2016-04-09T21:07:28+0000',
                                        'timezone' => 'UTC',
                                        'fixedNowTime' => false
                                
                                },
                                'modified' => object(Cake\I18n\Time) {

                                        'time' => '2016-04-17T21:26:16+0000',
                                        'timezone' => 'UTC',
                                        'fixedNowTime' => false
                                
                                },
                                'status' => 'Ativo',
                                'session' => 'd0a500904fd63a39ccb6d7556210ecfb',
                                'ip' => '201.53.143.193',
                                'role' => 'Comprador',
                                'login_error' => (int) 0,
                                'survey_id' => (int) 6,
                                'other' => 'sadasdsa',
                                'addresses' => [
                                        (int) 0 => 
object(App\Model\Entity\Address) {

                                                'new' => true,
                                                'accessible' => [
                                                        'user_id' => true,
                                                        'country_id' => true,
                                                        'code' => true,
                                                        'type' => true,
                                                        'zipcode' => true,
                                                        'line1' => true,
                                                        'line2' => true,
                                                        'city' => true,
                                                        'state' => true,
                                                        'country' => true,
                                                        'phone' => true,
                                                        'celphone' => true,
                                                        'user' => true
                                                ],
                                                'properties' => [
                                                        'phone' => '999999999',
                                                        'celphone' => '',
                                                        'zipcode' => '22222222',
                                                        'line1' => 'kjhkj',
                                                        'line2' => 'jhk',
                                                        'city' => 'jhkjhkj',
                                                        'state' => 'hj',
                                                        'country_id' => (int) 81
                                                ],
                                                'dirty' => [
                                                        'phone' => true,
                                                        'celphone' => true,
                                                        'zipcode' => true,
                                                        'line1' => true,
                                                        'line2' => true,
                                                        'city' => true,
                                                        'state' => true,
                                                        'country_id' => true
                                                ],
                                                'original' => [],
                                                'virtual' => [],
                                                'errors' => [
                                                        'code' => [
                                                                '_required' => 
'This field is required'
                                                        ],
                                                        'type' => [
                                                                '_required' => 
'This field is required'
                                                        ]
                                                ],
                                                'repository' => 'Addresses'
                                        
                                        }
                                ]
                        ],
                        'dirty' => [
                                'addresses' => true
                        ],
                        'original' => [
                                'addresses' => [
                                        (int) 0 => 
object(App\Model\Entity\Address) {

                                                'new' => false,
                                                'accessible' => [
                                                        'user_id' => true,
                                                        'country_id' => true,
                                                        'code' => true,
                                                        'type' => true,
                                                        'zipcode' => true,
                                                        'line1' => true,
                                                        'line2' => true,
                                                        'city' => true,
                                                        'state' => true,
                                                        'country' => true,
                                                        'phone' => true,
                                                        'celphone' => true,
                                                        'user' => true
                                                ],
                                                'properties' => [
                                                        'id' => (int) 29,
                                                        'user_id' => (int) 164,
                                                        'code' => (int) 1,
                                                        'type' => 'Principal',
                                                        'zipcode' => '22222222',
                                                        'line1' => 'kjhkj',
                                                        'line2' => 'jhk',
                                                        'city' => 'jhkjhkj',
                                                        'state' => 'hj',
                                                        'country_id' => (int) 
81,
                                                        'phone' => '',
                                                        'celphone' => '',
                                                        'country' => 
object(App\Model\Entity\Country) {

                                                                'new' => false,
                                                                'accessible' => 
[
                                                                        
'country_name' => true,
                                                                        
'addresses' => true
                                                                ],
                                                                'properties' => 
[
                                                                        'id' => 
(int) 81,
                                                                        
'country_name' => 'Haiti'
                                                                ],
                                                                'dirty' => [],
                                                                'original' => 
[],
                                                                'virtual' => [],
                                                                'errors' => [],
                                                                'repository' => 
'Countries'
                                                        
                                                        }
                                                ],
                                                'dirty' => [],
                                                'original' => [],
                                                'virtual' => [],
                                                'errors' => [],
                                                'repository' => 'Addresses'
                                        
                                        }
                                ]
                        ],
                        'virtual' => [],
                        'errors' => [],
                        'repository' => 'Users'
                
                }
        ],
        'dirty' => [
                'user' => true,
                'genres' => true
        ],
        'original' => [
                'genres' => [
                        (int) 0 => object(App\Model\Entity\Genre) {

                                'new' => false,
                                'accessible' => [
                                        'description_pt' => true,
                                        'description_en' => true,
                                        'description_es' => true,
                                        'buyers' => true,
                                        'records' => true
                                ],
                                'properties' => [
                                        'id' => (int) 3,
                                        'description_pt' => 'Bossa-Nova',
                                        'description_en' => 'Bossa-Nova',
                                        'description_es' => 'Bossa-Nova',
                                        '_joinData' => 
object(App\Model\Entity\BuyersGenre) {

                                                'new' => false,
                                                'accessible' => [
                                                        'genre_id' => true,
                                                        'buyer_id' => true,
                                                        'genre' => true,
                                                        'buyer' => true
                                                ],
                                                'properties' => [
                                                        'genre_id' => (int) 3,
                                                        'id' => (int) 66,
                                                        'buyer_id' => (int) 68
                                                ],
                                                'dirty' => [],
                                                'original' => [],
                                                'virtual' => [],
                                                'errors' => [],
                                                'repository' => 'BuyersGenres'
                                        
                                        }
                                ],
                                'dirty' => [],
                                'original' => [],
                                'virtual' => [],
                                'errors' => [],
                                'repository' => 'Genres'
                        
                        }
                ]
        ],
        'virtual' => [],
        'errors' => [],
        'repository' => 'Buyers'

}


-- 
Sign up for our Newsletter for updates.
http://cakephp.org/newsletter/signup

We will soon be closing this Google Group. But don't worry, we have something 
better coming. Stay tuned for an updated from the CakePHP Team soon.

Like Us on FaceBook https://www.facebook.com/CakePHP
Follow us on Twitter http://twitter.com/CakePHP
--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cake-php+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to