2011-08-02 15 views
1

私は3つのテーブルを持っています。codeigniter doctrine多対多関係

User 
    id 
Group 
    id 
UserGroup 
    user_id 
    article_id 
    date_joined 

ここでは、関係を設定する3つのモデルがあります。

//ユーザーモデル

<?php 
class User extends Doctrine_Record 
{ 
    // define table columns in this function 
    public function setTableDefinition() { 

    } 

    // setup some options 
    public function setUp() { 

     $this->hasMany('Group as Groupss', array(
       'local' => 'user_id', 
       'foreign' => 'group_id', 
       'refClass' => 'UserGroup' 
     )); 

     // causes 'created_at' and 'updated_at' fields to be updated automatically 
    $this->actAs('Timestampable'); 
    } 
} 

//グループモデル

<?php 

class Group extends Doctrine_Record 
{ 
    // define table columns in this function 
    public function setTableDefinition() { 

    } 
     $this->hasMany('User as Users', array(
       'local' => 'group_id', 
       'foreign' => 'user_id', 
       'refClass' => 'UserGroup' 
     ));  

    } 
} 

//リストユーザーグループ

<?php 

class UserGroup extends Doctrine_Record 
{ 
    public function setTableDefinition() 
    { 
     $this->hasColumn('user_id', 'integer', 4, array(
       'primary' => true 
      ) 
     ); 

     $this->hasColumn('achievement_id', 'integer', 4, array(
       'primary' => true 
      ) 
     ); 
     $this->hasColumn('date_completed', 'timestamp', 25); 
    } 
} 

と今私がやりたいすべては私のコントローラ内部の関係を構築で:

$user  =  Doctrine::getTable('User')->findOneByEmail('[email protected]'); 
    $group =  Doctrine::getTable('Group')->findOneByID('1'); 

    $user->Group = $user; 

どちらのSQLコマンドが結果を1つ戻ってきていると私は、私は次のエラーを取得するコントローラ実行すると:

Fatal error: Uncaught exception 'Doctrine_Record_UnknownPropertyException' with message 'Unknown record property/related component "User" on "Group"' in 

答えて

-1

refclassユーザーでオプションとグループクラスは、ほとんどのUserGroupはなくユーザグループ(教義doesnのでなければなりません単数形と複数形の違いを理解していない)。宣言した各setup()メソッドでparent :: setUp()メソッドも呼び出す必要があります。

the official manualには、多数関係のドキュメントが豊富に用意されています。 (どちらの例として、ユーザグループの関係を使用しています)

EDIT:再びそれを通過しながら、

私はコードといくつかの深刻な問題に気づいた:

  • あなたUserGroupテーブルにはarticle_id列があり、ただし、group_id列はありません。
  • Groupssという名前のGroupモデルとの宣言された関係は、これが関係を$user->Group不明にしています。
  • 最後に、あなたは、ユーザーグループの複数形は、実際に私のstackoverflowポストにタイプミスだった(と更新されています)$user->Groups[] = $group
+0

のようなグループの配列にユーザーを割り当てる必要があります。あなたが私に送ったガイドは、私が誤りを受けているかどうかわからない理由です。私はチュートリアルで彼らが を使用していることに気付きました。 "class User extends BaseUser"多分これはそれと関係がありますか? –

+0

私はリレーショナルテーブルに日付を追加しました(date_completed) –

+0

BaseUserは、与えられた時刻にYAML設定が含んでいたすべての情報を反映するDoctrineによって生成されたクラスです。それは単なるコード分離の問題なので、これが問題の原因になるとは思いません。あなたはYAML設定とは異なるディレクトリにモデルを生成してみて、どのような違いがあるのか​​見てみてください。 – K4emic