我有两张桌子,它们有两种不同的关系。表用户和此示例的表作业。
我不想在他们之间建立一对多的关系(一个用户可以创建多个作业),还有一个多到多的relationship (一个用户可以被分配几个作业,一个作业可以分配给多个用户)。我很难找到如何使用phpName和refPhpName来避免试图声明几个相同的方法/属性(例如,用户表中的$collJobs)。
下面是我的模式的一个最简单的示例
<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();
发布于 2022-06-16 13:47:41
<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放在外键上:)
https://stackoverflow.com/questions/72646302
复制相似问题