2010-10-12 92 views
2

我已經仿照兩個類具有多對多的關係:用戶與對話,當我使用他們,我不能創建這兩個類之間的鏈接:如何創建相關的記錄與學說PHP

class User extends Doctrine_Record 
{ 
public function setTableDefinition() { 

     $this->hasColumn('udid', 'string', 255); 
     $this->hasColumn('nb_requetes', 'integer', 255); 
} 

public function setUp() { 
    $this->actAs('Timestampable'); 
    $this->hasMany('Conversation as Conversations', 
         array('local'=> 'user_id', 
           foreign'=> 'conversation_id', 
           'refClass' => 'UserConversation')); 
} 

} 

而且

class Conversation extends Doctrine_Record 
{ 
public function setTableDefinition() { 

     $this->setTableName('conversations'); 

    $this->hasColumn('initiator_id', 'integer', 20); 
    $this->hasColumn('responder_id', 'integer', 20); 
} 

public function setUp() { 
    $this->actAs('Timestampable'); 

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

我試圖做類似的東西,使用它:

$user = new User(); 
$user->save(); 

$conversation = new Conversation(); 
$conversation->users[] = $user; 
$conversation->save(); 

但它不是工作,我的聯結表「UserConversation」保持空白......我是否正確地採取行動?

謝謝您的回答,

馬丁

+0

是'$ conversation-> users [0] = $ user;加工? – DrColossos 2010-10-18 09:09:13

回答

1

這裏有一個需要很多很多的類。我已經根據自己的代碼調整了它們,所以字段名稱有點不同,但它應該能讓您瞭解您需要的內容:

class User extends Doctrine_Record 
{ 
    public function setTableDefinition() 
    { 
     $this->hasColumn('name', 'string', 255); 
    } 

    public function setUp() 
    { 
     parent::setUp(); 
     $this->hasMany('Conversation as Conversations', array(
      'refClass' => 'UserConversations', 
      'local' => 'conversation_id', 
      'foreign' => 'user_id' 
     )); 
    } 
} 

class Conversation extends Doctrine_Record 
{ 
    public function setTableDefinition() 
    { 
     $this->hasColumn('name', 'string', 255); 
    } 

    public function setUp() 
    { 
     parent::setUp(); 
     $this->hasMany('User as Users', array(
      'refClass' => 'UserConversations', 
      'local' => 'user_id', 
      'foreign' => 'conversation_id' 
     )); 
    } 
} 

class UserConversations extends Doctrine_Record 
{ 
    public function setTableDefinition() 
    { 
     $this->hasColumn('user_id', 'integer', 4, array(
      'type' => 'integer', 
      'primary' => true, 
      'length' => '4', 
     )); 
     $this->hasColumn('conversation_id', 'integer', 4, array(
      'type' => 'integer', 
      'primary' => true, 
      'length' => '4', 
     )); 
     $this->hasColumn('name', 'string', 255, array(
      'type' => 'string', 
      'length' => '255', 
     )); 
    } 

    public function setUp() 
    { 
     parent::setUp(); 
    } 
}