首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一对多+多对多的关系伴随着进步

一对多+多对多的关系伴随着进步
EN

Stack Overflow用户
提问于 2022-06-16 13:01:56
回答 1查看 17关注 0票数 0

我有两张桌子,它们有两种不同的关系。表用户和此示例的表作业。

我不想在他们之间建立一对多的关系(一个用户可以创建多个作业),还有一个多到多的relationship (一个用户可以被分配几个作业,一个作业可以分配给多个用户)。我很难找到如何使用phpName和refPhpName来避免试图声明几个相同的方法/属性(例如,用户表中的$collJobs)。

下面是我的模式的一个最简单的示例

代码语言:javascript
复制
    <table name="autoclass">
        <column name="userId" phpName="Id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
        <column name="jobId" phpName="JobId" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>

        <foreign-key foreignTable="job" onDelete="cascade" onUpdate="cascade">
            <reference local="jobId" foreign="jobId"/>
        </foreign-key>
    </table>

    <table name="job">
        <column name="jobId" phpName="JobId" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
        // Some other meaningless fields
    </table>

    <table name="user_job" crossRef="true">
        <column name="jobId" phpName="JobId" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
        <column name="userId" phpName="Id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
    
        <foreign-key foreignTable="job" onDelete="cascade" onUpdate="cascade">
            <reference local="jobId" foreign="jobId"/>
        </foreign-key>
        <foreign-key foreignTable="user" onDelete="cascade" onUpdate="cascade">
            <reference local="userId" foreign="userId"/>
        </foreign-key>
    </table>

你能帮我找到如何最终实现这个模式吗?

我想做一些类似于$user->getJobs();$user->getAssignedJobs();$job->getUser();

EN

回答 1

Stack Overflow用户

发布于 2022-06-16 13:47:41

代码语言:javascript
复制
    <table name="autoclass">
        <column name="userId" phpName="Id" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
        <column name="jobId" phpName="JobId" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>

        <foreign-key foreignTable="job" onDelete="cascade" onUpdate="cascade">
            <reference local="jobId" foreign="jobId"/>
        </foreign-key>
    </table>

    <table name="job">
        <column name="jobId" phpName="JobId" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
        // Some other meaningless fields
    </table>

    <table name="user_job" crossRef="true">
        <column name="jobId" phpName="JobId" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
        <column name="userId" phpName="UserId" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
    
        <foreign-key foreignTable="job" onDelete="cascade" onUpdate="cascade" phpName="AssignedJob">
            <reference local="jobId" foreign="jobId"/>
        </foreign-key>
        <foreign-key foreignTable="user" onDelete="cascade" onUpdate="cascade"phpName="AssignedUser" >
            <reference local="userId" foreign="userId"/>
        </foreign-key>
    </table>

将phpName放在外键上:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72646302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档