public function alienDBConnect(
$driver = 'mysql',
$host = 'localhost',
$dbname = 'alien_db',
$port = '3306',
$username = 'root',
$password = '123'
) {
$dsn = $driver . ':host=' . $host . ';dbname=' . $dbname . ';port=' . $port . ';charset=utf-8';
$this->modx->addConnection($dsn, $username, $password);
$this->modx->addPackage('mypackage',$this->configs['modelPath'], 'prefix_');
}
This question has been answered by multiple community members. See the first response.
$this->connect = new xPDO($dsn, $username, $password);
// $this->connect->addPackage('mypackage',$this->config['modelPath'], 'prefix_');
// because this is a new connection, there is no package to append with.
// use setPackage() instead.
$this->connect->setPackage('mypackage', $this->config['modelPath'], 'prefix_');
Array
(
[0] => 00000
[1] =>
[2] =>
)
You can set up a model/schema within your package to easily use xPDO methods to get and modify your data, eg:
$collection = $this->connect->getCollection('myObject');
// override $modx to force it to use database's name on its table prefix
$modx->setPackage('modx', MODX_CORE_PATH . 'model/', '`app_modx`.`modx_');
$dsn = 'mysql:host=localhost;dbname=app_data;port=3306;charset=utf-8';
$modx->addConnection($dsn, $username, $password);
$modx->addPackage('app', $modx->getOption('core_path') . 'components/app/model/', '`app_data`.`app_');
// testing appObject
$c = $modx->newQuery('appMember');
$c->select(array(
'appMember.*'
));
$c->leftJoin('modUser', 'User', 'User.id = appMember.user_id');
$c->where(array(
'User.id' => 164,
));
//$c->prepare();
//$sql = $c->toSQL();
//echo __LINE__ . ' : $sql = ' . $sql . '<br />';
$member = $modx->getObject('appMember', $c);
if ($member) {
echo __LINE__ . ' : $member->toArray()<pre>';
print_r($member->toArray());
echo '</pre>';
} else {
die('xxx $member');
}
// testing back modObject
$resource = $modx->getObject('modResource', 1);
if ($resource) {
echo __LINE__ . ' : $resource->toArray()<pre>';
print_r($resource->toArray());
echo '</pre>';
} else {
die('xxx $resource');
}
when set/add-Package, the prefixes don't use closing backticks[ed. note: goldsky last edited this post 11 years, 3 months ago.]