如何使用PHP创建相关记录

如何使用PHP创建相关记录,php,doctrine,many-to-many,associations,entity-relationship,Php,Doctrine,Many To Many,Associations,Entity Relationship,我已经建模了两个具有多对多关系的类:User和Conversation,当我使用它们时,我无法创建这两个类之间的链接: class User extends Doctrine_Record { public function setTableDefinition() { $this->hasColumn('udid', 'string', 255); $this->hasColumn('nb_requetes', 'integer', 255);

我已经建模了两个具有多对多关系的类:User和Conversation,当我使用它们时,我无法创建这两个类之间的链接:

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'));
 }

}

我试着通过这样做来使用它:

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

$conversation = new Conversation();
$conversation->users[] = $user;
$conversation->save();
但它不起作用,我的连接表“UserConversation”保持为空。。。我这样做对吗

谢谢你的回答


Martin

以下是多对多所需的课程。我已经根据自己的代码对其进行了修改,因此字段名称略有不同,但它应该让您了解您需要什么:

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();
    }
}

Is
$conversation->users[0]=$user工作?
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();
    }
}