CSVインポート処理とか作るじゃないですか
作るじゃないですか。
というか作らざるを得ない場合があるじゃないですか。
そういう時、登録する前にCSVファイルをあらゆる方向からチェックする必要があると思うので、
取り急ぎ、読み込まれたCSVファイルのヘッダがまずもって想定しているフォーマット通りなのかをチェックする処理を実装してみます。
CSVヘッダとテーブルのカラムが同じかをチェックする処理の実装
※前提としてCSVヘッダと登録するテーブルのカラムが同じの場合を想定しています。
引数$csvHeaders
と$columns
には項目名を入れた配列を渡してやる。
/**
* テーブルのカラムとCSVヘッダとが等しいかのチェック処理
*
* @param array $columns
* @param array $csvHeaders
* @return bool
*/
public function isRegisterableThisCsvFile(array $csvHeaders, array $columns)
{
sort($csvHeaders);
sort($columns);
return ($columns === $csvHeaders);
}
からくりとしては配列をそれぞれソートして最後に比較し、両方とも全く同じであればtrue
を返す、ということをしてます。
おわり
- この処理以外にもデータの中身が登録値として正しいかチェックする処理も必要ですな(バリデーション)
- CSVインポート機能って、社内システムとか身内のみ使う想定ならいいけど、toCのサービスとかだと、実装時に胸焼けしそう