Database 帮助从数据库中为条令中的多对多生成模型
我正在使用条令,我已经设置了一些测试表,以生成模型: 我需要多对多关系模型(3个表转换为3个模型) (事情经过简化以明确要点) mysql表:Database 帮助从数据库中为条令中的多对多生成模型,database,orm,doctrine,many-to-many,Database,Orm,Doctrine,Many To Many,我正在使用条令,我已经设置了一些测试表,以生成模型: 我需要多对多关系模型(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 for
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
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”。本例中的“用户组”表只是从条令的角度来看的另一个表,而不是典型的参考表
通常,如果第一个正确,您可以这样做:
$user = new User();
$user->group[1]->name = 'group 1';
$user->group[2]->name = 'group 2';
现在,您不能使用户直接链接到用户组,而是链接到用户组
我已经检查了mysql中的表定义。他们是正确的。用户组有2列(主键和外键),每列都指向用户或组中的主键
但我想要条令模型中的标准多对多关系模型
我非常感谢你的帮助。我已经苦苦思索了半天了
怎么了
谢谢
Doctrine requires that Many-to-Many relationships be bi-directional. For example: both User must have many Groups and Group must have many User.
因此,您必须向用户模型添加多个定义
因此,您必须向用户模型添加多个定义
理论不能映射关系
自动地
您必须手动确保
关系,主要是因为
映射关系的约束
数据库管理系统之间有很大的不同
所以,从DB生成YAML,更新
手动创建YAML,然后生成
模型
问候,
资料来源:
理论不能映射关系
自动地
您必须手动确保
关系,主要是因为
映射关系的约束
数据库管理系统之间有很大的不同
所以,从DB生成YAML,更新
手动创建YAML,然后生成
模型
问候,
资料来源:我知道。但是,所有内容都是使用generate_models_from_db()从mysql数据库生成的。问题是,条令无法理解3个表之间是多对多的关系(其中一个是连接表)。正如@never_had_a_name所说,模型是由“generate models db”自动生成的。问题是为什么剧本不能识别多对多关系。我知道。但是,所有内容都是使用generate_models_from_db()从mysql数据库生成的。问题是,条令无法理解3个表之间是多对多的关系(其中一个是连接表)。正如@never_had_a_name所说,模型是由“generate models db”自动生成的。问题是为什么脚本不能识别多对多关系。这里的问题完全相同。我开始悬赏了。这里也有同样的问题。我开始悬赏了。
Doctrine requires that Many-to-Many relationships be bi-directional. For example: both User must have many Groups and Group must have many User.