voskobovich/yii2-many-to-many-behavior

Не удается закешировать модель

spiritabsolute opened this issue · 2 comments

Привет! Возникла ошибка Serialization of 'Closure' is not allowed при попытке закешировать данные модели, в которой использую поведение. Это произошло потому что я использую анонимную функцию в viaTableValues function ($model, $relationName, $attributeName, $relatedPk)
Подскажи, как можно избавиться от этой функции... Мне нужно записывать значения сортировки в связывающую таблицу. И я делаю так:
'viaTableValues' => [ 'sort' => function ($model, $relationName, $attributeName, $relatedPk) { if(is_array($model->sort) && array_key_exists($relatedPk, $model->sort)) { return $model->sort[$relatedPk]; } else { return 1; } }, ]

Избавляться от анонимных функций не вариант. Это шаг против эволюции. Думаю стоит смотреть на другие способы кеширования данных. Ты кеширует целый объект? Лучше кешировать только значения атрибутов модели. Так как объект может изменится и в кэше останется старая версия которая будет не совместима с кодом приложения, что вызовет ошибки.

Понял, спасибо за подсказку! Действительно, буду кешировать только значения!