0

I've 2 models: Templates and Modules. Both models have association belongsToMany to the other. Now I want to save few modules associated with Template (modules can be use multiple times for one template). I alsa have additional field (position) in join table.

When I prepare my entity to save everything is ok. I got duplikcated records in "modules",but after save there are only unique records in join table.

Prepared entity to save:


AdminTheme\Model\Entity\Template Object
(
    [name] => t3
    [description] => text3
    [modules] => Array
        (
            [0] => AdminTheme\Model\Entity\Module Object
                (
                    [id] => 2
                    [name] => TextBox
                    [default_conf] => Array
                        (
                        )

                    [is_active] => 1
                    [global_alias] => 
                    [description] => txt2
                    [created] => Cake\I18n\FrozenTime Object
                        (
                            [time] => 2019-09-05T10:48:04+02:00
                            [timezone] => Europe/Warsaw
                            [fixedNowTime] => 
                        )

                    [modified] => Cake\I18n\FrozenTime Object
                        (
                            [time] => 2019-09-05T14:31:23+02:00
                            [timezone] => Europe/Warsaw
                            [fixedNowTime] => 
                        )

                    [ico] => format_align_justify
                    [_joinData] => Cake\ORM\Entity Object
                        (
                            [position] => 4
                            [[new]] => 1
                            [[accessible]] => Array
                                (
                                    [*] => 1
                                )

                            [[dirty]] => Array
                                (
                                    [position] => 1
                                )

                            [[original]] => Array
                                (
                                )

                            [[virtual]] => Array
                                (
                                )

                            [[hasErrors]] => 
                            [[errors]] => Array
                                (
                                )

                            [[invalid]] => Array
                                (
                                )

                            [[repository]] => ModulesTemplates
                        )

                    [[new]] => 
                    [[accessible]] => Array
                        (
                            [name] => 1
                            [default_conf] => 1
                            [is_active] => 1
                            [global_alias] => 1
                            [description] => 1
                            [ico] => 1
                            [created] => 1
                            [modified] => 1
                            [templates] => 1
                        )

                    [[dirty]] => Array
                        (
                            [_joinData] => 1
                        )

                    [[original]] => Array
                        (
                        )

                    [[virtual]] => Array
                        (
                        )

                    [[hasErrors]] => 
                    [[errors]] => Array
                        (
                        )

                    [[invalid]] => Array
                        (
                        )

                    [[repository]] => AdminTheme.Modules
                )

            [1] => AdminTheme\Model\Entity\Module Object
                (
                    [id] => 1
                    [name] => NarrowHeader
                    [default_conf] => Array
                        (
                            [title] => text
                        )

                    [is_active] => 1
                    [global_alias] => 
                    [description] => txt1
                    [created] => Cake\I18n\FrozenTime Object
                        (
                            [time] => 2019-08-30T08:27:12+02:00
                            [timezone] => Europe/Warsaw
                            [fixedNowTime] => 
                        )

                    [modified] => Cake\I18n\FrozenTime Object
                        (
                            [time] => 2019-09-05T14:31:23+02:00
                            [timezone] => Europe/Warsaw
                            [fixedNowTime] => 
                        )

                    [ico] => format_align_justify
                    [_joinData] => Cake\ORM\Entity Object
                        (
                            [position] => 6
                            [[new]] => 1
                            [[accessible]] => Array
                                (
                                    [*] => 1
                                )

                            [[dirty]] => Array
                                (
                                    [position] => 1
                                )

                            [[original]] => Array
                                (
                                )

                            [[virtual]] => Array
                                (
                                )

                            [[hasErrors]] => 
                            [[errors]] => Array
                                (
                                )

                            [[invalid]] => Array
                                (
                                )

                            [[repository]] => ModulesTemplates
                        )

                    [[new]] => 
                    [[accessible]] => Array
                        (
                            [name] => 1
                            [default_conf] => 1
                            [is_active] => 1
                            [global_alias] => 1
                            [description] => 1
                            [ico] => 1
                            [created] => 1
                            [modified] => 1
                            [templates] => 1
                        )

                    [[dirty]] => Array
                        (
                            [_joinData] => 1
                        )

                    [[original]] => Array
                        (
                            [_joinData] => Cake\ORM\Entity Object
                                (
                                    [position] => 5
                                    [[new]] => 1
                                    [[accessible]] => Array
                                        (
                                            [*] => 1
                                        )

                                    [[dirty]] => Array
                                        (
                                            [position] => 1
                                        )

                                    [[original]] => Array
                                        (
                                        )

                                    [[virtual]] => Array
                                        (
                                        )

                                    [[hasErrors]] => 
                                    [[errors]] => Array
                                        (
                                        )

                                    [[invalid]] => Array
                                        (
                                        )

                                    [[repository]] => ModulesTemplates
                                )

                        )

                    [[virtual]] => Array
                        (
                        )

                    [[hasErrors]] => 
                    [[errors]] => Array
                        (
                        )

                    [[invalid]] => Array
                        (
                        )

                    [[repository]] => AdminTheme.Modules
                )

            [2] => AdminTheme\Model\Entity\Module Object
                (
                    [id] => 1
                    [name] => NarrowHeader
                    [default_conf] => Array
                        (
                            [title] => text
                        )

                    [is_active] => 1
                    [global_alias] => 
                    [description] => txt1
                    [created] => Cake\I18n\FrozenTime Object
                        (
                            [time] => 2019-08-30T08:27:12+02:00
                            [timezone] => Europe/Warsaw
                            [fixedNowTime] => 
                        )

                    [modified] => Cake\I18n\FrozenTime Object
                        (
                            [time] => 2019-09-05T14:31:23+02:00
                            [timezone] => Europe/Warsaw
                            [fixedNowTime] => 
                        )

                    [ico] => format_align_justify
                    [_joinData] => Cake\ORM\Entity Object
                        (
                            [position] => 6
                            [[new]] => 1
                            [[accessible]] => Array
                                (
                                    [*] => 1
                                )

                            [[dirty]] => Array
                                (
                                    [position] => 1
                                )

                            [[original]] => Array
                                (
                                )

                            [[virtual]] => Array
                                (
                                )

                            [[hasErrors]] => 
                            [[errors]] => Array
                                (
                                )

                            [[invalid]] => Array
                                (
                                )

                            [[repository]] => ModulesTemplates
                        )

                    [[new]] => 
                    [[accessible]] => Array
                        (
                            [name] => 1
                            [default_conf] => 1
                            [is_active] => 1
                            [global_alias] => 1
                            [description] => 1
                            [ico] => 1
                            [created] => 1
                            [modified] => 1
                            [templates] => 1
                        )

                    [[dirty]] => Array
                        (
                            [_joinData] => 1
                        )

                    [[original]] => Array
                        (
                            [_joinData] => Cake\ORM\Entity Object
                                (
                                    [position] => 5
                                    [[new]] => 1
                                    [[accessible]] => Array
                                        (
                                            [*] => 1
                                        )

                                    [[dirty]] => Array
                                        (
                                            [position] => 1
                                        )

                                    [[original]] => Array
                                        (
                                        )

                                    [[virtual]] => Array
                                        (
                                        )

                                    [[hasErrors]] => 
                                    [[errors]] => Array
                                        (
                                        )

                                    [[invalid]] => Array
                                        (
                                        )

                                    [[repository]] => ModulesTemplates
                                )

                        )

                    [[virtual]] => Array
                        (
                        )

                    [[hasErrors]] => 
                    [[errors]] => Array
                        (
                        )

                    [[invalid]] => Array
                        (
                        )

                    [[repository]] => AdminTheme.Modules
                )

        )

    [user_id] => 3
    [amount_modules] => 3
    [[new]] => 1
    [[accessible]] => Array
        (
            [name] => 1
            [user_id] => 1
            [description] => 1
            [use_amount] => 1
            [created] => 1
            [modified] => 1
            [user] => 1
            [amount_modules] => 1
            [modules] => 1
        )

    [[dirty]] => Array
        (
            [name] => 1
            [description] => 1
            [modules] => 1
            [user_id] => 1
            [amount_modules] => 1
        )

)

After save I got only 2 records in join table despite above Entity had 3 items.

1 Answers1

0

You should be aware of saving or associate saving in cakephp for the entity or data that has id it will not save but it update instead. So for your data there have two object that has the same id for this case it will insert first object and that first object will be update when it meet the same object id.

so total your record will have only 2 row. enter image description here