質問編集履歴
1
問題の追記
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
|
+
完全一致の場合のみ取得したいです。
|