回答編集履歴
1
コード部分を色付で見やすく変更
test
CHANGED
@@ -1,39 +1,20 @@
|
|
1
1
|
yh1244様の提示いただいたコードを元に、拙作ではありますが以下のコードで実装し直しました。
|
2
|
-
|
3
2
|
これにより大幅な省コード化、検索語句が増えても対応できるようになりました。
|
4
|
-
|
5
|
-
```
|
3
|
+
```PHP
|
6
|
-
|
7
4
|
public function search(Request $request)
|
8
|
-
|
9
5
|
{
|
10
|
-
|
11
6
|
$query = Article::newQuery();
|
12
|
-
|
13
7
|
$words = preg_split('/[\p{Z}\p{Cc}]++/u', $request->search, 3, PREG_SPLIT_NO_EMPTY);
|
14
8
|
|
15
|
-
|
16
|
-
|
17
9
|
foreach ($words as $word) {
|
18
|
-
|
19
10
|
if (preg_match('/-/', $word) == 0) {
|
20
|
-
|
21
11
|
$query->where('title', 'like', "%$word%");
|
22
|
-
|
23
12
|
} else if (preg_match('/-/', $word) == 1) {
|
24
|
-
|
25
13
|
$query->where('title', 'not like', '%' . preg_replace('/-/', '', $word) . '%');
|
26
|
-
|
27
14
|
}
|
28
|
-
|
29
15
|
}
|
30
16
|
|
31
|
-
|
32
|
-
|
33
17
|
$article = $query->paginate(7);
|
34
|
-
|
35
18
|
return view('layouts.result', ['items' => $article,]);
|
36
|
-
|
37
19
|
}
|
38
|
-
|
39
20
|
```
|