通过mysql和laravel

时间:2016-11-16 09:35:16

标签: php mysql laravel

假设我有一个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中这样做但我不知道如何实现这个逻辑。

任何人都可以帮助我这样做或建议更好的方法吗?

1 个答案:

答案 0 :(得分:3)

我建议您保持每位专家的问题总数,这样您就可以将问题分配给问题最少的人。你甚至可以将每个专家提出的未答复问题的总数减少,当专家回答问题时会降低这一问题,以便那些更频繁地回答问题的专家可以获得更多问题,而那些回答问题的时间更少,或者是困难的问题。很长时间回答,得到的问题少了。

这样做的方法是在专家表num_questions上添加另一个字段。选择专家时,您可以执行$expert = Expert::where('active', '=', 1)->orderBy('num_questions')->first();之类的操作,然后只需将问题分配给该用户,并将该num_questions字段增加一个用户。然后,当用户回答问题时,您需要减少该数字(如果您希望在总问题上找到未回答的问题)。