在SilverStripe中,如何将数据保存到SilverStripe尚未创建的外部数据库表中?
例如:
我创建了一个News
表,并希望 - 如果我添加一个新的新闻项目 - 相同的数据存储在我之前的新闻表中。
答案 0 :(得分:3)
我会创建一个安静的API来保持独立,因此您不需要在SilverStripe站点中保留外部数据库凭据。
例如,您可以使用https://github.com/guzzle/guzzle将新闻发布到SilverStripe站点(onAfterWrite)的外部站点(外部数据库所在的位置)。在外部站点上,您需要创建一个简单的API服务器来监听Post请求,如果有效则将它们保存在db中。什么是sql注射!
希望它有所帮助。答案 1 :(得分:0)
如果表格相同,您实际上只需切换数据库配置,然后使用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);