2017-10-05 5 views
2

私は3つのテーブル/モデルLaravel取得受注

  1. ユーザー(ID)
  2. 注文(ID)
  3. 割り当て(ORDER_ID、USER_ID、created_atと)
  4. を持っています

管理者は、あるユーザーに注文を割り当ててから再割り当てすることができ、この履歴を保存する必要があります。私は

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の順序を取得する必要があり、論理的にID = 1のユーザに割り当てられた注文を取得したいと持っている例えば

= 2 IDを持つためには、= 1で、ユーザに再割り当てされたため、 id = 2 on 10.10.2010

私はEloquentでLaravel 5.4を使用しています。あなたが正しい関係を使用していることを確認し

orderBy('created_at', 'desc')->firstOrFail(); 

でソートクエリ(私は、ユーザーのモデルのassignedOrders関係を持つようにしたい)SQLクエリや雄弁関係で

+0

なぜ管理者は、再割り当てする場合は、deleted_atを追加していけませんorderをremoved_atフィールドに設定して、再割り当てしたものでも 'withTrashed()'を追加したい場合は、現在の割り当て済みの注文だけを返します。 – Maraboc

+0

私は別の解決策がありますが、修正なしでこの問題をどのように解決できるのでしょうか。 – Aram810

答えて

1

私はあなたの課題表に1つの修正を提案しています。

フィールドには、次のようなものが追加されます(保留、アクティブ、再割り当て、完了)。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テーブルの上に新しい行を作成

+0

これは最良の方法です。すでにこの方法で行っていますが、興味のためにこの問題を解決する方法を知りたい変形。 – Aram810

0

を助けてくださいのようなあなたのモデルはDocs hereに多くまたは属しています。