我已经建模了两个具有多对多关系的类: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'));
}
}
和
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 :(得分: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();
}
}