2016-12-30 3 views
0

Привет Я пытаюсь получить данные файла csv и отображать эти данные на моем представлении.Zend Framework 2 - Warning: SplFileObject :: setCsvControl(): escape должен быть символом

Ниже моя функция контроллера:

public function indexAction() 
    { 
     $delimiter = ','; 
     $enclosure = '""'; 
     $escape = '//'; 
     $filename = 'data' . DIRECTORY_SEPARATOR . 'csv' . DIRECTORY_SEPARATOR . 'StoreDepartment.csv';; 
     $this->file = new SplFileObject($filename); 
     $this->file->setFlags(SplFileObject::READ_CSV | SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE); 

     $this->file->setCsvControl($delimiter, $enclosure, $escape); 
     $this->useFirstRecordAsHeader = true; 

     $response = $this->getResponse(); 
     $headers = $response->getHeaders(); 
     $headers->addHeaderLine('Content-Type', 'text/csv'); 
     $contents = $this->file->fread($this->file->getSize()); 
     $response->setContent($contents); 
     $views = new ViewModel(array('text'=>$response)); 
     return $views;  
    } 

Я получаю все данные как CSV. но я получаю ниже предупреждения:

Предупреждение: SplFileObject :: setCsvControl(): побег должен быть персонаж

Также я хочу, чтобы преобразовать эти данные в формате JSON или формат массива это возможно?

Основная концепция заключается в том, что я хочу сохранить эти данные в моей таблице базы данных. Какой формат подходит для хранения данных в базе данных? Пожалуйста, помогите

Как устранить обе ошибки?

ответ

1

Предупреждение связано с тем, что ваша переменная $ escape является двумя символами, а не одной.

$escape = '/'; 

или

$escape = "//"; 

Так как вам нужно только, чтобы избежать обратных косых черт при использовании двойных кавычек.

Что касается вашего вопроса относительно того, как хранить в базе данных. Это очень сложно сказать, не зная, что вам нужно делать и какие данные находятся в CSV. Однако я бы предложил иметь сопоставление один к одному между столбцом CSV и столбцом базы данных. Хотя количество таблиц, которые вам нужны, действительно зависит от данных и случаев использования. Есть также несколько ситуаций, когда вы можете просто сохранить необработанные данные, но снова потребуется дополнительная информация, и все равно будет уместным ответ, который будет дан

+0

Я изменил $ escape = '//'; до $ escape = '/'; один, но не работает, все еще выдавая ту же ошибку. не могли бы вы мне помочь ? –