假设我有一个experts
表,如下所示:
+-----------+----------+----------+--------+
| expert_id | name | family | active |
+-----------+----------+----------+--------+
| 1 | ali | ahadi | 1 |
| 2 | reza | hosseini | 1 |
| 3 | hossein | rezaei | 0 |
| 4 | mohammad | gholami | 1 |
+-----------+----------+----------+--------+
另一方面,有一个questions
表,如下所示:
+-------------+-------+-----------+
| question_id | title | expert_id |
+-------------+-------+-----------+
| 1 | A | 1 |
| 2 | B | 2 |
| 3 | C | 4 |
| 4 | D | 1 |
| 5 | E | 2 |
| 6 | F | 4 |
+-------------+-------+-----------+
我正在研究一个问答应用程序。当用户询问新问题时,我想选择一个专家(当然激活专家,意味着active
字段等于1的专家)可以回答问题。({{ 1}}字段将选定的专家ID保存在expert_id
表中。
但我不希望这是随机选择。相反,我想按顺序在questions
expert_id
表格中看到。
事实上,由于每天都会提出许多问题,我想平等地在专家之间分配问题。
我想在laravel中这样做但我不知道如何实现这个逻辑。
任何人都可以帮助我这样做或建议更好的方法吗?
答案 0 :(得分:3)
我建议您保持每位专家的问题总数,这样您就可以将问题分配给问题最少的人。你甚至可以将每个专家提出的未答复问题的总数减少,当专家回答问题时会降低这一问题,以便那些更频繁地回答问题的专家可以获得更多问题,而那些回答问题的时间更少,或者是困难的问题。很长时间回答,得到的问题少了。
这样做的方法是在专家表num_questions
上添加另一个字段。选择专家时,您可以执行$expert = Expert::where('active', '=', 1)->orderBy('num_questions')->first();
之类的操作,然后只需将问题分配给该用户,并将该num_questions
字段增加一个用户。然后,当用户回答问题时,您需要减少该数字(如果您希望在总问题上找到未回答的问题)。