Database 帮助从数据库中为条令中的多对多生成模型

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

我正在使用条令,我已经设置了一些测试表,以生成模型:

我需要多对多关系模型(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

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.