2011-10-20 12 views
3

私は非標準のデータベース設定を使用しています。このテストケースをKohana 3.2で動作させようとしていますが、運がないわけです。シナリオ:Kohana 3.2 ORM - 複数のデータベースにまたがるモデルを関連付ける?

  • 私はデータベース
  • を使用してコースのモデルを持っている私はcourses_membersは、データベース内のコース

    ため

モデルをテーブルに参加していたデータベースB

  • を使用してメンバーのモデルを持っています
    class Model_Course extends ORM { 
    
    // Select the DB 
    protected $_db_group = 'default'; 
    
    // override primary key 
    protected $_primary_key = 'courseid'; 
    
    // Relationship 
    protected $_has_many = array(
        'members' => array(
         'model' => 'member', 
         'foreign_key' => 'memberID', 
         'through' => 'courses_members', 
        ), 
    ); 
    
    } 
    

    メンバーのモデル

    私のコントローラで今
    class Model_Member extends ORM { 
    
    // Select the DB 
    protected $_db_group = 'alternate'; 
    
    // override primary key 
    protected $_primary_key = 'memberID'; 
    
    // Relationship 
    protected $_has_many = array(
        'courses' => array(
         'model' => 'course', 
         'foreign_key' => 'courseid', 
         'through' => 'courses_members' 
        ), 
    ); 
    
    } 
    

    私はいくつかのテストデータを空のオブジェクトで

    $courses = ORM::factory('course')->find_all(); 
    
    foreach ($courses as $course) 
    { 
        echo $course->coursename . '<br/>'; 
    
        foreach ($course->members as $member) 
        { 
        echo '-' . $member->username . '<br/>'; 
        } 
    
        echo '<hr/>'; 
    
    } 
    

    が、$ member->ユーザ名の結果をエコーし​​ようとしているしようとしています。空の物は私を悲しくする。

    アイデア? Kohana ORMは複数のデータベースでこのように動作しますか?

  • 答えて

    1

    これはLEAP ORM for Kohanaを使用して簡単に達成できます。 LEAPでは、使用するデータソース(つまりデータベース設定グループ)をモデルに指定するだけで、ORMはデータベース接続プールを使用するため、データベース間の切り替えを処理します。 Leapはまた、モジュールがDB2、Firebird、MariaDB、MS SQL、MySQL、Oracle、PostgreSQL、およびSQLite用のドライバを持っているので、データベースの方言を切り替えることもできます。 LEAP ORMはgithubからhttps://github.com/spadefoot/kohana-orm-leapにダウンロードできます。

    +0

    :については

    foreach ($course->members as $member) { echo '-' . $member->username . '<br/>'; } 

    を変更します。 Matthew氏のように、複数のデータベースで簡単に作業できます。 – Ziminji

    +0

    公式のORMでは不可能なのですか? –

    0

    答えが少し遅れましたが、ここに解決策があります。私はちょうど私のKohanaのアプリケーションでリープを使用して自分自身を開始し、それは素晴らしい作品

    foreach ($course->members->find_all() as $member) 
    { 
        echo '-' . $member->username . '<br/>'; 
    } 
    
    関連する問題