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

質問編集履歴

1

2021/12/03 18:19

投稿

meron88
meron88

スコア50

title CHANGED
File without changes
body CHANGED
@@ -3,119 +3,4 @@
3
3
  例えば編集画面などで **code = A100** を **code = A200** に変更することはできるのですが、
4
4
  **code = A100** はそのまま **A100**で登録したいという場合にバリデーションに引っかかってしまいます。
5
5
  どのように修正すれば実現できるか教えていただきたいです。
6
- よろしくお願いいたします。
6
+ よろしくお願いいたします。
7
-
8
-
9
-
10
- **menuテーブル**
11
- |id|code|
12
- |:--|:--:|
13
- |1|A100||
14
- |2|B100||
15
-
16
-
17
- ### 該当のソースコード
18
-
19
- **web.php**
20
- ```php
21
- Route::get('/menu/edit/{code}', [MenuController::class, 'edit'])->name('menu.edit');
22
- Route::post('/menu/update/{code}', [MenuController::class, 'update'])->name('menu.update');
23
- ```
24
-
25
- **コントローラー**
26
- ```php
27
- public function update(UpdateAction $action, UpdateRequest $request, $code)
28
- {
29
-
30
- $storePattern = $action($request, $code);
31
-
32
- return redirect()->route('menu.edit', $request->code);
33
- }
34
-
35
- ```
36
-
37
- **更新処理クラス**
38
- ```ここに言語を入力
39
- <?php
40
-
41
- class UpdateAction
42
- {
43
- public function __invoke(Request $request, $storePatternCd)
44
- {
45
- DB::transaction(function () use ($request, $code) {
46
-
47
- Menu::where('code', $code)->update([
48
- 'code' => $request->code,
49
- ]);
50
-
51
- });
52
- }
53
- }
54
-
55
- ```
56
-
57
- **Requestクラス**
58
- ```php
59
- <?php
60
- class UpdateRequest extends FormRequest
61
- {
62
- /**
63
- * Determine if the user is authorized to make this request.
64
- *
65
- * @return bool
66
- */
67
- public function authorize()
68
- {
69
- return true;
70
- }
71
-
72
- /**
73
- * Get the validation rules that apply to the request.
74
- *
75
- * @return array
76
- */
77
- public function rules() {
78
-
79
- return [
80
- 'code' => ['required', Rule::unique('menus')->ignore($this->id)],
81
- ];
82
- }
83
-
84
- public function messages() {
85
-
86
- return [
87
- 'code.unique' => 'CDは既に登録されています',
88
- ];
89
- }
90
- }
91
-
92
- ```
93
- **マイグレーション**
94
- ```
95
- <?php
96
- class MenuTable extends Migration
97
- {
98
- /**
99
- * Run the migrations.
100
- *
101
- * @return void
102
- */
103
- public function up()
104
- {
105
- Schema::create('menus', function (Blueprint $table) {
106
- $table->id();
107
- $table->string('code', 10)->unique()->comment('メニューコード');
108
- }
109
-
110
- /**
111
- * Reverse the migrations.
112
- *
113
- * @return void
114
- */
115
- public function down()
116
- {
117
- Schema::dropIfExists('menus');
118
- }
119
- }
120
-
121
- ```