cakephp3でCSVを読み込み、データベースに登録する処理を作成しています。
dump等でデータを格納した連想配列の内容を確認しても問題ないように見えるのですが、
正常に登録ができず、悩んでおります。
CSVファイルの1行目をDBのカラム名にしており、下記のようなコードで連想配列にしています。
$file = new SplFileObject($uploadFile); $file->setFlags(SplFileObject::READ_CSV); $header = []; foreach ($file as $row) { if ($row === [null]) continue; if (empty($header)) { $header = $row; continue; } $data[] = array_combine($header, $row); }
新規登録の場合、下記のようにforeachで保存させたいのですが、バリデーションエラーとなり正常に登録ができません。
foreach($data as $csvRow) { $item = $this->Items->newEntity(); $item = $this->Items->patchEntity($item, $csvRow); if ($this->Items->save($item)) { $this->Flash->success('登録成功'); } else { $this->Flash->error('登録失敗'); } }
登録する際の配列構造に問題があるのか、配列の内容に問題があるのか悩んでおります。
patchEntityの際など、他に根本的な間違いをしている気もしているのですが、、、
すでに登録されているレコードのidのみを変更したテストデータでも同様の現象となります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/16 18:11