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] => )
$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 8 years, 10 months ago.]