IM和我已經設置了生成到模型中的一些測試表:幫助使用學說產生從數據庫模型的多對多教義
我想許多一對多的關係模型(3頁錶轉換到3種型號)
(事情簡化,使點晴)
MySQL表:
user:
id INT // primary key
name VARCHAR
group:
id INT // primary key
name VARCHAR
user_group:
user_id INT // primary and foreign key to user.id
group_id INT // primary and foreign key to group.id
我認爲,這將產生這些模型(從文件):
// User.php
class User extends Doctrine_Record
{
public function setTableDefinition()
{
$this->hasColumn('id');
$this->hasColumn('name');
}
public function setUp()
{
$this->hasMany('Group' as 'Groups', array(
'refClass' => 'UserGroup',
'local' => 'user_id',
'foreign' => 'group_id'
)
);
}
}
// Group.php
class Group extends Doctrine_Record
{
public function setTableDefinition()
{
$this->hasColumn('id');
$this->hasColumn('name');
}
public function setUp()
{
$this->hasMany('User' as 'Users', array(
'refClass' => 'UserGroup',
'local' => 'group_id',
'foreign' => 'user_id'
)
);
}
}
// UserGroup.php
class UserGroup extends Doctrine_Record
{
public function setTableDefinition()
{
$this->hasColumn('user_id')
);
$this->hasColumn('group_id')
);
}
}
,但它產生的:
// User.php
abstract class BaseUser extends Doctrine_Record
{
public function setTableDefinition()
{
$this->hasColumn('id');
$this->hasColumn('name');
}
public function setUp()
{
$this->hasMany('UserGroup', array(
'local' => 'id',
'foreign' => 'user_id'));
}
}
// Group.php
abstract class BaseGroup extends Doctrine_Record
{
public function setTableDefinition()
{
$this->hasColumn('id');
$this->hasColumn('name');
}
public function setUp()
{
$this->hasMany('UserGroup', array(
'local' => 'id',
'foreign' => 'group_id'));
}
}
// UserGroup.php
abstract class BaseUserGroup extends Doctrine_Record
{
public function setTableDefinition()
{
$this->hasColumn('user_id');
$this->hasColumn('group_id');
}
public function setUp()
{
$this->hasOne('User', array(
'local' => 'user_id',
'foreign' => 'id'));
$this->hasOne('Group', array(
'local' => 'group_id',
'foreign' => 'id'));
}
}
你可以看到,沒有「refClass」中的「用戶」和「組」模型指向'UserGroup'。在這種情況下,'UserGroup'表只是Doctrine觀點中的另一張表格而不是典型的參考表格。
通常如果正確,如第一個,你可以這樣做:
$user = new User();
$user->group[1]->name = 'group 1';
$user->group[2]->name = 'group 2';
現在你不能引起用戶是沒有直接聯繫的集團,而是用戶組。
我在mysql中檢查了我的表定義。他們是正確的。 user_group有2列(主鍵和外鍵),每一列都指向用戶或組中的主鍵。
但是我想在Doctrine模型中使用標準的多對多關係模型。
我很感激一些幫助。現在我已經努力想了半天。
出了什麼問題?
謝謝!
完全相同的問題在這裏。我開始賞金。 – 2010-12-09 15:01:17