質問編集履歴

1

問題の追記

2018/05/06 08:54

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -61,3 +61,49 @@
61
61
  ```
62
62
 
63
63
  このwhere内でなんとか検索できるものなのか、そもそもそういう検索方法はないのでしょうか?
64
+
65
+
66
+
67
+ ---
68
+
69
+
70
+
71
+ 検索方法が分かりました。
72
+
73
+
74
+
75
+ ```
76
+
77
+ $users = Employee::whereHas('roles', function ($query) {
78
+
79
+ $query->whereIn('role_id', [10,11,12]);
80
+
81
+ })
82
+
83
+ ->get();
84
+
85
+ ```
86
+
87
+
88
+
89
+ このようにして取ることが出来ましたが、role_idが10,11,12のもだけを取得が出来ません。
90
+
91
+ 上記の例だと、10,11,12のどれかのroleを持っているユーザであれば取得可能です。
92
+
93
+
94
+
95
+ whereInの代わりに、whereを使うと、変な挙動となります。
96
+
97
+ 例えば、あるユーザのロールが10,11で、
98
+
99
+ 検索条件には、10,11,12としている場合ヒットします。
100
+
101
+ また、あるユーザのロールが11,12だった場合にはヒットしなくなります。
102
+
103
+ どうやらロールの先頭から評価していっているようです。
104
+
105
+
106
+
107
+ どうすれば、ロールを10,11,12を持つユーザを取得できるのでしょうか?
108
+
109
+ 完全一致の場合のみ取得したいです。