我有3个表/模型
管理员可以为某个用户分配订单,然后重新分配,我必须存储此历史记录。
例如我有
Users
----+
id |
----+
1 |
-----
2 |
----+
Orders
----+
id |
----+
1 |
----+
2 |
----+
Assignments
------------------------------------
id | user_id | order_id | created_at
------------------------------------
3 | 2 | 1 | 10.10.2010
------------------------------------
2 | 1 | 1 | 09.10.2010
------------------------------------
1 | 1 | 2 | 09.10.2010
现在我想获得分配给id为1的用户的订单,逻辑上我必须获得id = 2的订单,因为id = 1的订单被重新分配给10.10.2010上id = 2的用户
我正在使用Laravel 5.4和Eloquent。
请帮我解决SQL查询或Eloquent关系(我想为我的用户模型分配订单关系)
答案 0 :(得分:1)
我建议您对Assignments表进行一次修改。
您应该添加一个status
字段,该字段将作为以下内容(待处理,活动,重新分配,完成)。实际上你应该创建一个新的表来存储它,但是为了一个简单的例子,我们坚持这一点。
这样,您可以保留所有订单的历史记录。如果由于某种原因,管理员将订单从userA重新分配给userB,然后将其重新分配回userA,这也会有所帮助。
通过这样做,您获得订单1的当前用户的查询将是:
Assignments::where('order_id', 1)->where('status', 'active')->first();
要获取订单的历史记录,可以使用以下查询:
Assignments::where('order_id', 1)->orderBy('created_at')->get();
这将显示所有具有状态的订单。
-------------------------------------------------
id | user_id | order_id | status | created_at
-------------------------------------------------
3 | 5 | 1 | active | 10.15.2010
-------------------------------------------------
2 | 2 | 1 | reassigned | 09.11.2010
-------------------------------------------------
1 | 1 | 1 | reassigned | 09.10.2010
显然,每次管理员更改订单状态时,您都需要更新状态字段,然后在Assignments
表
答案 1 :(得分:0)