質問するログイン新規登録

質問編集履歴

1

問題の追記

2018/05/06 08:54

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -29,4 +29,27 @@
29
29
  // 3名のユーザうち、検索条件のロールを持っているユーザを取得
30
30
  $users = $user->where(.....)
31
31
  ```
32
- このwhere内でなんとか検索できるものなのか、そもそもそういう検索方法はないのでしょうか?
32
+ このwhere内でなんとか検索できるものなのか、そもそもそういう検索方法はないのでしょうか?
33
+
34
+ ---
35
+
36
+ 検索方法が分かりました。
37
+
38
+ ```
39
+ $users = Employee::whereHas('roles', function ($query) {
40
+ $query->whereIn('role_id', [10,11,12]);
41
+ })
42
+ ->get();
43
+ ```
44
+
45
+ このようにして取ることが出来ましたが、role_idが10,11,12のもだけを取得が出来ません。
46
+ 上記の例だと、10,11,12のどれかのroleを持っているユーザであれば取得可能です。
47
+
48
+ whereInの代わりに、whereを使うと、変な挙動となります。
49
+ 例えば、あるユーザのロールが10,11で、
50
+ 検索条件には、10,11,12としている場合ヒットします。
51
+ また、あるユーザのロールが11,12だった場合にはヒットしなくなります。
52
+ どうやらロールの先頭から評価していっているようです。
53
+
54
+ どうすれば、ロールを10,11,12を持つユーザを取得できるのでしょうか?
55
+ 完全一致の場合のみ取得したいです。