Skip Navigation

[Resolved] If can I use the view or other way to query connected posts for many to many rel

This support ticket is created 5 years, 3 months ago. There's a good chance that you are reading advice that it now obsolete.

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

Sun Mon Tue Wed Thu Fri Sat
- 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 -
- 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 -

Supporter timezone: Asia/Hong_Kong (GMT+08:00)

Author
Posts
#1182059

please transfer this ticket to Luo, because in order to express my question clearly and avoid mistake, I have to use my native language, luckily, I speak the same language as Luo. Thanks!
我的问题跟这个帖子有关 https://toolset.com/forums/topic/relationship-can-not-be-inherited-from-parent-posts-to-child-posts/ 因为你提到我的在线约课系统设置有问题,是的我想了想是有问题, 我这样改一下 您看可以吗? 同时也会引出来几个问题

为了将课程和用户-老师的日程联系起来,并且跟用户-学生联系起来
设置两个帖子类型,
1.约课日程,用于教师设置自己可供预约的时间,Author 是 用户-老师
2,课程,用于用户学生的计划课程,课程是预先设定好的,用户-学生不能改动,Author 是网站编辑人员。

当用户-老师建立一个可供预约的时间,则Author 的用户老师,建立了只有自己可以管理的表单,

用户-老师的可供约课的表单填写完并发布后,用户学生可以开始约课,用户-学生怎样可以把指定的课程跟老师可供预约的时间联系起来呢?
我使用了一个 Many to Many 关系,为每个课程添加一个 关系表单链接,这样用户--学生可以使用 关系表单链接指定当前的帖子与 用户-老师的约课日程帖子链接。

如此一下出来了很多问题
1. 我不确定,这样做完后,在这个关系的中间表单和中间帖子里面,是否可以显示出 用户-学生的用户资料信息,如果不能的话,这样安排就是失败的;
2. Many to Many 看起来是一种关系的多对多,跟帖子的多对多无关,但是我的约课系统是 1对1,怎么样限制,每个关系只联系一次呢?
3. 有没有办法将 post connection选择器, 查询 索引就像 View一样,因为如果课程很多的话,根本就不需要给用户选,直接按照学习进度,安排最近的内容即可

谢谢哦,我的逻辑有些不清楚

对于这个,有没有其他建议呢?

#1182089

你好,

我的想法跟你差不多,但是感觉还要考虑其他问题,约课系统感觉并不简单,比如
- 教师与课程的关系
- 学生与课程的关系
- 约课日程与上面三者(教师,课程,学生)的关系

我建议你这样设置文章关系:
1) 四个文章类型
- 教师
- 学生
- 课程
- 约课日程 ,添加几个字段:
a) 开始时间
b) 结束时间
c) ”约定状态“字段, 这里我建议有一个单选菜单,三个选项:
- 可约(默认)
- 已约

设置“约课日程”为其他三个文章类型的子文章类型,比如:
教师 和 约课日程: 一对多(one-to-many)
学生 和 约课日程: 一对多
课程 和 约课日程: 一对多

这样可以保证每个“约课日程”都只与一个教师、一个学生和一个课程相关,也就实现了学生和教师直接的一对一约课关系

2) 教师登录以后,显示一个”教师页面“
- 显示一个文章view,列出所有与自己相关的“约课日程”文章,这里可以根据时间字段和”约定状态“字段进行搜索排序
- 提供一个表单,创建子“约课日程”文章,并指定“约课日程”的父“课程“

3)学生登录以后,显示一个”学生页面‘:
- 教师列表,点击教师名字,进入一个新页面”该教师可约日程页”
- 与自己相关的子“约课日程”列表

4)在“教师可约日程页”,列出指定教师可约日程表,按照字段 ”约定状态“=可约,显示一个“约课”按钮(编辑表单按钮)
点击“约课”按钮以后进入一个编辑“约课日程”文章表单,提交表单,将“约课日程”的字段 ”约定状态“修改为“已约”状态

暂时想到这些,如果有什么新问题,请开新帖,网站架构是很费脑的事情。谢谢!

#1182817

谢谢你,耽误你好半天的时间,我今天试了一下,这样设计有一个问题, 类型学生只是对于约课日程的表单的一个字段值做了修改,并没有创建新的子文章,因此通过类型学生,无法查询出来当前学生的预约课程的,类型课程可以手工选,但是类型学生无法手工选,不知道关系逻辑出问题还是怎么样。

#1183346

你说的没错,还有很多细节问题没有考虑到。

对于你说的这个问题,当学生用户提交编辑“约课日程”文章的表单以后,你可以使用cred_save_data,触发一个PHP代码,在这个代码里面获取当前用户的那篇唯一的“学生”文章编号,然后与“约课日程”文章连接起来,参考文档
https://toolset.com/documentation/programmer-reference/cred-api/#cred_save_data
https://codex.wordpress.org/Class_Reference/WP_Query#Author_Parameters
https://toolset.com/documentation/customizing-sites-using-php/post-relationships-api/#toolset_connect_posts

如果你对如何写这段代码,请开新帖。谢谢!

This ticket is now closed. If you're a WPML client and need related help, please open a new support ticket.