Closed asnenne closed 2 years ago
Методы работают правильно.
https://github.com/instantsoft/icms2/blob/master/system/core/model.php#L530
У метода update есть еще параметры, вы заглядывайте в код. Четвёртым параметром передавайте true
$model->update($content_table_name, $id, [$field['name'] => $users], true);
Спасибо за подсказку. Но какой-то не очевидный способ, сам бы никогда не додумался отключить проверку наличия поля, если оно уже есть, ведь метод hookAfterAdd по идее должен работать после его создания, а значит поле уже должно быть. Да и в БД оно уже на месте. В этом и был вопрос. Метод выполняется после создания поля, но, получается, движок не видит, что оно уже создано.
Используемая версия InstantCMS: 2
Стоит такая задача. Есть таблица X, куда записываются данные компонентом. Есть поле, при создании которого в админке нужно записать в него значения из таблицы X, соответствующие записям этого типа контента.
Проблема в том месте, где я хочу эти данные записать.
$model->update... не работает просто потому, что столбец с именем поля в таблице cms_ctype еще не существует. Вернее, уже существует, но его не видно.
Вот фрагмент кода:
До этого момента всё хорошо, все данные на месте.
Проверка наличия столбца в таблице
dump($model->db->getTableFields($content_table_name));
перед $model->update... показала, что столбца еще нет. Хотя реально в БД он уже есть.При этом hookAfterUpdate отрабатывает правильно.
Простите, если что-то не теми словами объяснил, я не программист))
UPD. Нашел выход, но он подразумевает не использовать системные методы, раз они не работают))