2011-08-02 132 views
1

我有三個表。codeigniter學說多對多關係

User 
    id 
Group 
    id 
UserGroup 
    user_id 
    article_id 
    date_joined 

現在我有三個獨立的模型來建立關係。

//用戶模型

<?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命令返回一個結果,當我運行控制器我收到以下錯誤:

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

回答

-1

在用戶refclass選項組類應該最有可能是用戶組,而不是用戶組(教義沒有按不瞭解單數和複數的區別)。您還應該在聲明的每個setup()方法中調用parent :: setUp()方法。

關於the official manual中的許多關係有大量的文檔。 (使用用戶組關係爲例)

編輯:

我注意到一些嚴重問題的代碼做的時候,而再次:

  • UserGroup表有一個article_id列,但沒有group_id欄。
  • 以名稱Groupss聲明的與Group型號的關係,這使得關係$user->Group未知。
  • 最後,你應該將用戶分配到組的陣列狀$user->Groups[] = $group
+0

羣組的多元化實際上是對我的計算器後一個錯字(和已被更新)。您發給我的指南是我下面的指南,這就是爲什麼我不確定我收到錯誤。我注意到他們在教程中使用 「class User extends BaseUser」,或許這跟它有關係? –

+0

它也值得注意我在我的關係表中添加了一列(date_completed) –

+0

BaseUser是由Doctrine生成的類,它反映了YAML配置在給定時間包含的所有信息。這只是代碼分離的問題,所以我無法想象這會成爲問題的根源。您可以嘗試在YAML配置的不同目錄中生成模型,並查看是否存在差異? – K4emic