В SilverStripe, как я могу сохранить данные во внешней таблице базы данных, которая не была создана SilverStripe?
Например: я создал таблицу News
и хочу, если я добавлю новый элемент новостей, – те же данные хранятся в моей предыдущей таблице новостей.
Если таблицы одинаковы, вы можете просто переключить конфигурацию базы данных, а затем использовать ORM, а затем переключиться обратно …
$otherDB = array( "type" => 'MySQLDatabase', "server" => 'localhost', "username" => 'new_user', "password" => 'xxxx', "path" => '', "database" => 'new_database' ); DB::connect($otherDB); //Use ORM to write //revert to normal credentials global $databaseConfig; DB::connect($databaseConfig);
Я бы создал успокоительный API, чтобы держать вещи в отдельности, поэтому вам не нужно сохранять внешние учетные данные db на своем сайте SilverStripe.
Вы можете использовать https://github.com/guzzle/guzzle для отправки новостей на внешний сайт (где живет внешний db) с вашего сайта SilverStripe (onAfterWrite), например. На внешнем сайте вам нужно будет создать простой сервер API, который будет прослушивать Post-запросы и если он сохраняет их в db. Что для инъекций sql!
Надеюсь, поможет.