質問編集履歴

3

修正

2017/08/29 16:40

投稿

tarao
tarao

スコア28

test CHANGED
File without changes
test CHANGED
@@ -158,7 +158,7 @@
158
158
 
159
159
  }//foreach($specsvalue as $spec_values)
160
160
 
161
- $specs_product =$this->specs_products->newEntities($produtc_spec);
161
+ $specs_product =$this->specs_products->newEntities($lists);
162
162
 
163
163
  $product = $this->specs_products->saveMany($specs_product);
164
164
 

2

修正

2017/08/29 16:40

投稿

tarao
tarao

スコア28

test CHANGED
File without changes
test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  製品項目は固定でスペック項目はカテゴリーによって項目が変わるので、製品とスペックの登録を分けてすることにしました。
34
34
 
35
- 矢印製品登録時の処理です
35
+ ↓製品登録時の処理です
36
36
 
37
37
  ```php
38
38
 

1

説明の追加

2017/08/29 16:39

投稿

tarao
tarao

スコア28

test CHANGED
File without changes
test CHANGED
@@ -30,9 +30,9 @@
30
30
 
31
31
 
32
32
 
33
- 製品項目は固定ので、製品とスペックの登録を分けてすることにしました。
33
+ 製品項目は固定でスペック項目はカテゴリーによって項目が変わるので、製品とスペックの登録を分けてすることにしました。
34
-
34
+
35
- 製品登録時の処理です
35
+ ↓矢印製品登録時の処理です
36
36
 
37
37
  ```php
38
38
 
@@ -82,9 +82,19 @@
82
82
 
83
83
  この後、スペック項目の登録処理をします。
84
84
 
85
+ インポートしたスペック項目の配列($specresult)を登録分(ヘッダー以外
86
+
87
+ )foreachします。
88
+
89
+ スペックの数分配列を作ります。
90
+
91
+
92
+
93
+
94
+
85
95
  ```php
86
96
 
87
- if($this->products->saveMany($product)){//製品情報更新
97
+ if($this->products->saveMany($product)){//製品更新できたら
88
98
 
89
99
 
90
100
 
@@ -116,44 +126,112 @@
116
126
 
117
127
  $deleteflg=1;
118
128
 
119
- }
129
+ }
120
-
130
+
121
- $lists=[];
131
+ $lists=[];
122
-
132
+
123
- foreach($id as $ids){//登録した製品id
133
+ foreach($id as $ids){//登録した製品id
124
-
134
+
125
- $list=[];
135
+ $list=[];
136
+
126
-
137
+ //カテゴリーテーブルに紐付いたスペックのid($specid)
138
+
127
- foreach($specid as $skey=> $spec_ids){
139
+ foreach($specid as $skey=> $spec_ids){
128
-
140
+
129
- $speccolum['spec_value']=$spec_values;
141
+ $speccolum['spec_value']=$spec_values;
130
-
142
+
131
- $speccolum['delete_flg']=$deleteflg;
143
+ $speccolum['delete_flg']=$deleteflg;
132
-
144
+
133
- $speccolum['category_id']=$scv_file['categories_id'];
145
+ $speccolum['category_id']=$scv_file['categories_id'];
146
+
134
-
147
+ $speccolum['product_id']=$ids;//製品id
148
+
135
- $speccolum['product_id']=$ids;//製品id $speccolum['spec_id']=$spec_ids;//スペックid
149
+ $speccolum['spec_id']=$spec_ids;//スペックid
136
-
150
+
137
- $list[]=$speccolum;
151
+ $list[]=$speccolum;
138
-
152
+
139
- }
153
+ }
140
-
154
+
141
- $lists[]=$list;
155
+ $lists[]=$list;
142
-
156
+
143
- }
157
+ }
144
-
158
+
145
- }//foreach($specsvalue as $spec_values)
159
+ }//foreach($specsvalue as $spec_values)
146
-
160
+
147
- $specs_product = $this->specs_products->newEntities($produtc_spec);
161
+ $specs_product =$this->specs_products->newEntities($produtc_spec);
148
-
162
+
149
- $product = $this->specs_products->saveMany($specs_product);
163
+ $product = $this->specs_products->saveMany($specs_product);
150
-
164
+
151
- }//if($speckey!=0)
165
+ }//if($speckey!=0)
152
-
153
-
154
-
166
+
167
+
168
+
155
- }// foreach($specresult as $speckey => $specsvalue )
169
+ }// foreach($specresult as $speckey => $specsvalue )
156
-
170
+
157
- }
171
+ }//if($this->products->saveMany($product)
158
172
 
159
173
  ```
174
+
175
+
176
+
177
+ newEntitiesする$produtc_specは下のような形で入って欲しのですが、
178
+
179
+ spec_valueの値が一つの製品で全部スペック1のtest1が、2つ目の製品では全部スペック2の値が入ってしまいます。
180
+
181
+
182
+
183
+
184
+
185
+ [
186
+
187
+ 0=>[
188
+
189
+ 'spec_value'=>'test1',
190
+
191
+ 'delete_flg'=>'0',
192
+
193
+ 'category_id'=>2,
194
+
195
+ 'product_id'=>1,
196
+
197
+ 'spec_id'=>1,
198
+
199
+ ],
200
+
201
+ 1->[
202
+
203
+ 'spec_value'=>'',
204
+
205
+ 'delete_flg'=>'0',
206
+
207
+ 'category_id'=>2,
208
+
209
+ 'product_id'=>1,
210
+
211
+ 'spec_id'=>2,
212
+
213
+ ]、
214
+
215
+ 2->[
216
+
217
+ 'spec_value'=>'test3',
218
+
219
+ 'delete_flg'=>'0',
220
+
221
+ 'category_id'=>2,
222
+
223
+ 'product_id'=>1,
224
+
225
+ 'spec_id'=>3,
226
+
227
+ ]
228
+
229
+ ]
230
+
231
+ 配列が多すぎて、わかり辛くなってしまいました。
232
+
233
+ 上のように$produtc_specに入れたいのですが、どうすればよいでしょうか...
234
+
235
+
236
+
237
+ かなり説明不足かもしれませんが、ご教示お願いします。