0

私の仕事では、CodeIgniterを使用して Web ベースのアプリケーションを構築しました。現在のフレームワークよりも多くのことができ、より多くの構造を持つ優れたフレームワークだと思うので、このアプリケーションをCakePHPで再構築したいと思います。

小さなブログ アプリケーションを作成するために、CakePHP Web サイトの基本的なチュートリアルから始めました。それはうまくいきます。また、これを Twitter Bootstrap と組み合わせました。現在、アプリケーションを再構築しています。

最初に、私のアプリケーションが何をするかを説明します。 データベースからのデータのリスト (概要) が表示されます。このデータベースは localhost (MySQL) にあり、「localdb1」と呼ばれます (この例では)。テーブルは「シート」と呼ばれます。このテーブルには、直接使用できるデータが含まれていますが、他のデータベースを参照する ID も含まれています

たとえば、顧客の番号を含む顧客というフィールドがあります。顧客の名前は、別のホスト ("remotehost2") にある別のデータベース (ODBC) に保存されます。この例では、データベースは「remotedb2」と呼ばれ、顧客名は「customername」フィールドの「customers」テーブルに保存されます。

ここ 2 日間、CakePHP のデータベース システムに苦労しています。システムが命名規則を使用しているため、私には明確ではありません。

私が何をした:

  • そこのウェブサイトでCakePHPのドキュメントを読んで検索しましたが、これは非常に便利だと思いますが、答えが見つかりません。
  • 私は答えを求めてインターネットを(Googleのオフコースで)調べました。考えられるさまざまな解決策を見つけましたが、適切でないか、データベース接続でいくつかのエラーが発生しました。
  • Stackoverflow の QA で検索しました。同上。:(

結果は次のようになります。

localdb1.sheets からのレコードのリストが必要ですが、顧客番号は表示したくありませんが、リモート データベース remotedb2.customers で見つけた顧客の名前が必要で、顧客の番号で見つけることができます。

誰かが私にそれをどうすればいいのか教えてもらえますか? 難点は、これだけではなく、これら 2 つのホストにあるデータベースとテーブルをさらに結合する必要があることです。したがって、リモートホストからコンテンツを取得したり、他のテーブルからローカルホストを取得したりできるプラグインのようなソリューションが必要です (モデルの方がよい場合)。

4

1 に答える 1

2

あなたにとって役立つかどうかはわかりませんが、以下のパターンを使用してクラウドの複数のデータベースを維持しています。あなたにも役立つことを願っています...

database.php で、2 番目のデータベースの新しい接続オブジェクトを作成します。

public $user = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'remotehost2',
    'login' => 'login_id',
    'password' => 'password',
    'database' => 'remotedb2',
    'prefix' => '',
    'encoding' => 'utf8',
);

その後、モデルで以下の構文を使用してその接続オブジェクトを使用できます

enter var $useDbConfig = 'table_name';

また

以下の構文を使用して接続を維持することもできます

 $options = array();
    $db = ConnectionManager::getDataSource('table_name');
    $list = $db->rawQuery('select id, name from table_name;');
    while ($row = $db->fetchRow()) { 
        $options = Set::insert($options, $row["table_name"]["id"], $row["tablle_name"]["name"]);
    } 
于 2013-03-02T05:38:08.877 に答える