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

質問編集履歴

1

疑問を分かりやすく修正、コード追加

2021/03/27 10:45

投稿

dauto
dauto

スコア38

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,8 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- EC-CUBE4で会員テーブルにGroupというエンティティとリレーションしたgroup_idというカラムを追加しました。
4
- 管理画面の会員登録フォームからセレクトボックスでグループ選択してgroup_idをテーブルに追加できる様にしたいのですが、以下のエラーが発生しました。
3
+ EC-CUBE4で管理画面の会員登録フォームグループという項目を追加した、以下のエラーが発生しました。
4
+ グループは新規に追加したdtb_groupというテーブルとリレーションしています。
5
- このエラーを解決するためにGroupの配列を送信したいのですが、には何処を改善すればいいのでしょうか。
5
+ このエラーを解決するためには何処を改善すればいいのでしょうか。
6
6
 
7
7
  ### 発生している問題・エラーメッセージ
8
8
 
@@ -12,7 +12,7 @@
12
12
 
13
13
  ### 該当のソースコード
14
14
 
15
- GroupExtension.php(会員テーブルにgroup_idのフォームを追加するコード
15
+ GroupExtension.php(会員登録拡張フォーム)
16
16
  ```php
17
17
  <?php
18
18
 
@@ -93,6 +93,236 @@
93
93
  }
94
94
  ```
95
95
 
96
+ Group.php(新規追加したdtb_groupテーブルのエンティティ)
97
+ ```PHP
96
- ### 試したこと
98
+ <?php
97
99
 
100
+ namespace Plugin\CustomerGroup\Entity;
101
+
102
+ use DateTime;
103
+ use Doctrine\Common\Collections\Collection;
104
+ use Doctrine\ORM\Mapping as ORM;
105
+ use Eccube\Entity\AbstractEntity;
106
+ use Eccube\Entity\Customer;
107
+
108
+ /**
109
+ *
110
+ * Group
111
+ *
112
+ * @ORM\Table(name="dtb_group")
113
+ * @ORM\InheritanceType("SINGLE_TABLE")
114
+ * @ORM\DiscriminatorColumn(name="discriminator_type", type="string", length=255)
115
+ * @ORM\HasLifecycleCallbacks()
98
- 最初はEntityTypeを使用して実装しようとしていたのですが、プラグインではSymfonyのコンポーネント外の為EntityTypeは使用できませんでした。
116
+ * @ORM\Entity(repositoryClass="Plugin\CustomerGroup\Repository\GroupRepository")
117
+ */
118
+ class Group extends AbstractEntity
119
+ {
120
+ /**
121
+ * @var int
122
+ *
123
+ * @ORM\Column(name="id", type="integer", options={"unsigned":true})
124
+ * @ORM\Id
125
+ * @ORM\GeneratedValue(strategy="IDENTITY")
126
+ */
127
+ private $id;
128
+
129
+ /**
130
+ * @var string
131
+ *
132
+ * @ORM\Column(name="name", type="string", length=255)
133
+ */
134
+ private $name;
135
+
136
+ /**
137
+ * @var \DateTime
138
+ *
139
+ * @ORM\Column(name="create_date", type="datetimetz")
140
+ */
141
+ private $create_date;
142
+
143
+ /**
144
+ * @var \DateTime
145
+ *
146
+ * @ORM\Column(name="update_date", type="datetimetz")
147
+ */
148
+ private $update_date;
149
+
150
+ /**
151
+ * @var \Doctrine\Common\Collections\Collection
152
+ *
153
+ * @ORM\OneToMany(targetEntity="Eccube\Entity\Customer", mappedBy="Group")
154
+ */
155
+ private $Customer;
156
+
157
+ /**
158
+ * Set id
159
+ *
160
+ * @param integer $id
161
+ *
162
+ * @return Group
163
+ */
164
+ public function setId($id)
165
+ {
166
+ $this->id = $id;
167
+
168
+ return $this;
169
+ }
170
+
171
+ /**
172
+ * Get id
173
+ *
174
+ * @return integer
175
+ */
176
+ public function getId()
177
+ {
178
+ return $this->id;
179
+ }
180
+
181
+ /**
182
+ * Set name
183
+ *
184
+ * @param string $name
185
+ *
186
+ * @return Group
187
+ */
188
+ public function setName($name)
189
+ {
190
+ $this->name = $name;
191
+
192
+ return $this;
193
+ }
194
+
195
+ /**
196
+ * Get name
197
+ *
198
+ * @return string
199
+ */
200
+ public function getName()
201
+ {
202
+ return $this->name;
203
+ }
204
+
205
+ /**
206
+ * Set createDate
207
+ *
208
+ * @param DateTime $createDate
209
+ *
210
+ * @return Group
211
+ */
212
+ public function setCreateDate($createDate)
213
+ {
214
+ $this->create_date = $createDate;
215
+
216
+ return $this;
217
+ }
218
+
219
+ /**
220
+ * Get createDate
221
+ *
222
+ * @return DateTime
223
+ */
224
+ public function getCreateDate()
225
+ {
226
+ return $this->create_date;
227
+ }
228
+
229
+ /**
230
+ * Set updateDate
231
+ *
232
+ * @param DateTime $updateDate
233
+ *
234
+ * @return Group
235
+ */
236
+ public function setUpdateDate($updateDate)
237
+ {
238
+ $this->update_date = $updateDate;
239
+
240
+ return $this;
241
+ }
242
+
243
+ /**
244
+ * Get updateDate
245
+ *
246
+ * @return DateTime
247
+ */
248
+ public function getUpdateDate()
249
+ {
250
+ return $this->update_date;
251
+ }
252
+
253
+ /**
254
+ * Set customer
255
+ *
256
+ * @param Customer|null $customer
257
+ *
258
+ * @return Group
259
+ */
260
+ public function setCustomer(Customer $customer = null)
261
+ {
262
+ $this->Customer = $customer;
263
+
264
+ return $this;
265
+ }
266
+
267
+ /**
268
+ * Get customer
269
+ *
270
+ * @return Customer|null
271
+ */
272
+ public function getCustomer()
273
+ {
274
+ return $this->Customer;
275
+ }
276
+ }
277
+ ```
278
+
279
+ CustomerTrait.php(dtb_customerテーブルの拡張エンティティ)
280
+ ```PHP
281
+ <?php
282
+
283
+ namespace Plugin\CustomerGroup\Entity;
284
+
285
+ use Doctrine\ORM\Mapping as ORM;
286
+ use Eccube\Annotation as Eccube;
287
+ use Symfony\Component\Validator\Constraints as Assert;
288
+
289
+ /**
290
+ * @Eccube\EntityExtension("Eccube\Entity\Customer")
291
+ */
292
+ trait CustomerTrait {
293
+
294
+ /**
295
+ * @var Group
296
+ *
297
+ * @ORM\ManyToOne(targetEntity="Plugin\CustomerGroup\Entity\Group", inversedBy="Customer")
298
+ * @ORM\JoinColumns({
299
+ * @ORM\JoinColumn(name="group_id", referencedColumnName="id")
300
+ * })
301
+ */
302
+ private $Group;
303
+
304
+ /**
305
+ * Set group
306
+ *
307
+ * @param Group|null $group
308
+ *
309
+ * @return CustomerTrait
310
+ */
311
+ public function setGroup(Group $group = null)
312
+ {
313
+ $this->Group = $group;
314
+
315
+ return $this;
316
+ }
317
+
318
+ /**
319
+ * Get group
320
+ *
321
+ * @return Group|null
322
+ */
323
+ public function getGroup()
324
+ {
325
+ return $this->Group;
326
+ }
327
+ }
328
+ ```