Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用spreep连接多个数据库进行查询_Php_Mysql_Propel - Fatal编程技术网

Php 如何使用spreep连接多个数据库进行查询

Php 如何使用spreep连接多个数据库进行查询,php,mysql,propel,Php,Mysql,Propel,我做了很多研究来阅读一些文档,但我没有找到答案 我有两个数据库通过我的推进配置连接。它们有相同的结构,相同的表格 此时,我为每个数据库创建了一个schema.xml,它们是: db1.schema.xml和db2.schema.xml 我修改了我的config.php: <?php $serviceContainer = \Propel\Runtime\Propel::getServiceContainer(); $serviceContainer->checkVersion('2.

我做了很多研究来阅读一些文档,但我没有找到答案

我有两个数据库通过我的推进配置连接。它们有相同的结构,相同的表格

此时,我为每个数据库创建了一个schema.xml,它们是: db1.schema.xml和db2.schema.xml

我修改了我的config.php:

<?php
$serviceContainer = \Propel\Runtime\Propel::getServiceContainer();
$serviceContainer->checkVersion('2.0.0-dev');
$serviceContainer->setAdapterClass('db1', 'mysql');
$manager = new \Propel\Runtime\Connection\ConnectionManagerSingle();
$manager->setConfiguration(array (
  'dsn' => 'mysql:host=localhost;port=3306;dbname=db1',
  'user' => 'root',
  'password' => '',
  'settings' =>
  array (
    'charset' => 'utf8',
    'queries' =>
    array (
    ),
  ),
  'classname' => '\\Propel\\Runtime\\Connection\\ConnectionWrapper',
  'model_paths' =>
  array (
    0 => 'src',
    1 => 'vendor',
  ),
));
$manager->setName('db1');
$serviceContainer->setConnectionManager('db1', $manager);
$serviceContainer->setDefaultDatasource('db1');

$serviceContainer2 = \Propel\Runtime\Propel::getServiceContainer();
$serviceContainer2->checkVersion('2.0.0-dev');
$serviceContainer2->setAdapterClass('db2', 'mysql');
$manager2 = new \Propel\Runtime\Connection\ConnectionManagerSingle();
$manager2->setConfiguration(array (
  'dsn' => 'mysql:host=localhost;port=3306;dbname=db2',
  'user' => 'root',
  'password' => '',
  'settings' =>
  array (
    'charset' => 'utf8',
    'queries' =>
    array (
    ),
  ),
  'classname' => '\\Propel\\Runtime\\Connection\\ConnectionWrapper',
  'model_paths' =>
  array (
    0 => 'src',
    1 => 'vendor',
  ),
));
$manager2->setName('db2');
$serviceContainer2->setConnectionManager('db2', $manager);
$serviceContainer2->setDefaultDatasource('db2');
从现在开始,我不知道该怎么办。如何在请求中指定要使用的数据库


<?php
require_once 'vendor/autoload.php';

require_once 'generated-conf/config.php';

use nhlonline\AuthorQuery;

$author = AuthorQuery::create()->find();

foreach($author as $pub){
   echo $pub->getFirstName() . '<br>';
}


?>

即使尝试此操作,也会出现错误(我的AuthorQuery类文件正确地位于文件夹中):

致命错误:未捕获错误:在中找不到类“Base\AuthorQuery” C:\xampp\htdocs\nhlonline\nhlonline\AuthorQuery.php:15堆栈跟踪:#0 C:\xampp\htdocs\nhlonline\vendor\composer\ClassLoader.php(444): 包括()#1 C:\xampp\htdocs\nhlonline\vendor\composer\ClassLoader.php(322): Composer\Autoload\includeFile('C:\xampp\htdocs…')2[内部 功能]: Composer\Autoload\ClassLoader->loadClass('nhlonline\Autho…')3 C:\xampp\htdocs\nhlonline\test.php(8): spl_autoload_调用('nhlonline\Autho…')#4{main}已被抛出 第15行的C:\xampp\htdocs\nhlonline\nhlonline\AuthorQuery.php


您需要将相应的连接对象传递给
find()
方法。检查接口:


find(ConnectionInterface$con=null)

主题外:我认为推进2的开发已经停止,甚至同一版本的作者也建议切换到其他积极开发的ORM。阅读本说明:

<?php
require_once 'vendor/autoload.php';

require_once 'generated-conf/config.php';

use nhlonline\AuthorQuery;

$author = AuthorQuery::create()->find();

foreach($author as $pub){
   echo $pub->getFirstName() . '<br>';
}


?>