下記のようなcsvデータをデータベースに登録するアプリを作っています
バージョン情報 1,お客様氏名,2,生年月日,郵便番号,住所-1-1,電話番号,,,0 5,契約日 11,契約店舗,都道府県番号,店舗種類コード,2751352,郵便番号,住所,電話番号 201,ID,製品名,製品コード,製品の種類 301,商品説明,商品素材,原産国 301,商品説明,,原産国
今扱っているcsvは先頭の番号によって保存するテーブルが異なります
301,商品説明,商品素材,原産国 301,商品説明,,原産国
このように複数送られてきて、かつ、入力必須項目で無い部分が抜けているデータがあります。
私が書いているコードではこの抜けているデータがある場合指定できませんというエラーが出てしまいます
public function post(Request $request){ $user_id = $request->user_id; //csvデータを多次元配列化 $csvData = $request->getContent(); $lines = explode("\n", $csvData); $array = array(); foreach ($lines as $line) { $array[] = str_getcsv($line); } $setumei= array_filter($array, function($record){ return $record[0] == 301; }); if(empty($setumei) != true){ $setumei_count = count($setumei); $setumei= array_merge($setumei); for($i = 0; $i < $setumei_count; $i++){ $setumei_in[] = [ 'setumei' => $setumei[1], 'sozai' => $setumei[2], 'gensankoku' => $setumei[3], 'user_id' => $user_id ]; } var_dump($setumei); // $setumei= DB::table('setumei')->insert($setumei_in); } }
ダンプをすると空欄のところはこのように出力されます
[2]=> string(0) ""
どのようにすれば上記のように空欄のある配列が混ざっていてもインサート文を組み立てることができますでしょうか?
レコードが複数送られてこないなら、入力必須で無い要素が空か否かでインサート文を分けられるのですが、上記のようにあるもの無いものが混在する場合どう対処していいものか分からないのでアドバイスいただければと思います
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。