Phalcon: Метод сохранения не реализован: устранение неполадок и решение
Если вы знакомы с использованием PHP-фреймворка Phalcon (https://phalconphp.com/en/), возможно, вы столкнулись с проблемой/ошибкой при попытке сохранить данные с помощью Phalcon ORM.
ПРИМЕР
Если у вас есть модель, и вы устанавливаете данные следующим образом:
Теперь проблема, с которой вы столкнетесь при запуске этого кода, вы можете получить эту ошибку из исключения:
Не реализованы
Нет линий. Нет Следа… Нет. Что вообще означает «Не реализовано»!? Хороший вопрос….
ОТВЕТ И РЕШЕНИЕ
По-видимому, в Phalcon (мы заметили это на Phalcon 2), когда у вас есть реляционные столбцы в форме массива в вашем hasMany() или hasOne(). Например:
Phalcon не реализует метод save(), но вместо этого реализует другой метод, называемый _postSaveRelatedRecords(). Его определение выглядит следующим образом:
защищенный логический _postSaveRelatedRecords (Phalcon\Db\AdapterInterface $connection, Phalcon\Mvc\ModelInterface[] $ Связанный)
Вот почему вы получаете ошибку Not Implemented при попытке использовать метод save() Phalcon. Моя команда и я собираемся попросить Phalcon написать функцию, которая позволит вам обойти эту логику и по-прежнему использовать метод сохранения.
На данный момент вы можете просто создать дубликат модели с добавлением мира «Single» к имени модели. Во-вторых, вы захотите установить в качестве источника модели ту же таблицу базы данных, что и исходная модель. Например:
В вашем контроллере просто используйте эту модель вместо другой модели, чтобы использовать метод сохранения. Это правда, что вы не сможете иметь массивы реляционных hasMany() или hasOne. Однако вы по-прежнему можете использовать hasMany() и hasOne(), просто убедитесь, что они соответствуют обычным определениям. Нормальные определения таковы:
$this->hasMany("id", "RobotsParts", "robots_id"); $this->hasOne("id", "RobotsParts", "robots_id");
Я надеюсь, что это поможет вам, если вы пытаетесь устранить неполадки, почему ваш метод Phalcon Save() не сохраняет должным образом. Удачи!