yii2-linker-behavior icon indicating copy to clipboard operation
yii2-linker-behavior copied to clipboard

Работают ли behaviors в связывающей таблице (ManyToMany)?

Open ivan-cc opened this issue 6 years ago • 5 comments

Имеем три таблицы: Users, Groups и связывается все через таблицу UsersToGroups. В таблице users_to_groups три поля: user_id, group_id, created_by, updated_by Соответственно, в модели UsersToGroups есть такое поведение: 'blameable' => [ 'class' => 'BlameableBehavior', ], Связывающие поля заполняются как надо, а вот created_by и updated_by всегда пустые. Т.е. behaviors Не отрабатывают. Это фича или бага?

ivan-cc avatar Jun 03 '18 00:06 ivan-cc

@moneyadmin все зависит от того, как вы подключили и настроили поведение. Покажите примеры конфигураций.

voskobovich avatar Jun 10 '18 12:06 voskobovich

Ну вот так указаны поведения в модели Users:

'LinkerBehaviorRelation' => [
                    'class' => \voskobovich\linker\LinkerBehavior::className(),
                    'relations' => [
                        'groupids' =>[
                            'groups',
                            'updater' => [
                                'class'=> \voskobovich\linker\updaters\ManyToManySmartUpdater::className(),

                                 'viaTableAttributesValue' => [

                                       'value' => function($updater, $relatedPk, $rowCondition)
                                       {
                                           return $updater->getBehavior()->owner->groupids_value[$relatedPk];
                                       },
                                   ]
                                ],
                            'get' => function($value)
                            {
                                return $value;
                            },
                            'set' => function($values)
                            {
                                //exit('ok');
                                return $values;
                            }
                        ],
                    ],
                ],
//...

ivan-cc avatar Jun 12 '18 23:06 ivan-cc

А нет примера настроек, где behaviors связывающей модели (таблицы) точно работают?

ivan-cc avatar Jun 23 '18 03:06 ivan-cc

Хм. Такое впечатление, что методы типа afterSave, afterDelete и прочие тоже не работают в модели для связывающей таблицы.

ivan-cc avatar Jun 24 '18 22:06 ivan-cc

@moneyadmin посмотрите в логику поведения. Методы в связывающей таблице вроде и не должны работать. Модели для этой таблицы не должно быть вообще. Если же у вас есть модель, то это не связь много ко многим, а две последовательные простые связи. Если это так, то есть веротность, что вам мое поведение не подходит. Либо переносить логику с модели в методах afterSave & beforeSave в настройки поведения.

voskobovich avatar Jun 25 '18 12:06 voskobovich