为了解决这个问题,我是一名设计师/前端开发人员,正在寻找有关如何设置模型的一些指导。我已经阅读了关于协会和HABTM的蛋糕书,特别是很多,但仍然不太明白哪个适合我的需要。
我使用以下模型和简单关系构建了一个Cake应用程序:
User hasMany Workout
User hasMany Shoe
Shoe hasMany Workout
我想允许用户将其他用户添加到锻炼中,因此用户HABTM锻炼。将User2添加到锻炼中也会为User2创建锻炼。
我还希望User2能够自己编辑锻炼的详细信息,同时保持关联(以及User1的详细信息)。例如,User2可以指定自己的注释或锻炼时间与User1指定的时间不同。
似乎HABTM协会不会允许特定于用户的详细信息部分,但是有多少可能通过?我可以这样做:
User hasMany WorkoutDetail
Workout hasMany WorkoutDetail
User hasMany Shoe
Shoe hasMany Workout
WorkoutDetail为每个用户存储每个锻炼的所有个人详细信息?
感谢
答案 0 :(得分:1)
是的,你的第二个解决方案会运行良好,这就是当有额外信息存储在连接表中时,我通常会做HABTM关系。
User hasMany WorkoutDetail
Workout hasMany WorkoutDetail
您可以添加的另一件事是
WorkoutDetail belongsTo User
WorkoutDetail belongsTo Workout
这样,如果您查询WorkoutDetail
表,则会获得User
和Workout
信息。
就像你说的那样,每个用户都应该在WorkoutDetail表中有一个单独的条目。