Ошибка при использовании https://github.com/Maatwebsite/Laravel-Excel

Я использую этот пакет https://github.com/Maatwebsite/Laravel-Excel. И когда я загружаю свой файл, dd (результат) равен

    CellCollection {#842 ▼

         #title: null
        #items: array:4 [▼
         "news_title" => "7th AGM of ADBL today; endorsing 47% cash"            
         "desc" => "The AGM will be endorsing 47% percent cash dividend to its shareholders from the net profit it earned in last fiscal year 2070/71. "
            "link" => "http://www.sharesansar.com/viewnews.php?id=26224&cat=news"
         "stock_code" => "LBL"
        ]
    }

Итак, здесь #items содержат мои данные, тогда как я не знаю, почему выводится #title. И когда я пытаюсь сохранить свои данные, я получаю сообщение об ошибке нарушения целостности из-за этого #title? Итак, есть ли решение?

Вот мой код для хранения данных

     public function excelNews()
    {
        if (Input::hasFile('file')) {
            $file = Input::file('file');
            Excel::load($file, function($reader) {
                $reader->setDateFormat('j/n/Y H:i:s');
                $results = $reader->get();
                 foreach ($results as $result)
                {
                    dd($result); // for testing
                    $news = new StockNews;
                    $news->title = $result->news_title;
                    $news->desc = $result->desc;
                    $news->save()
                }

         });
    }
        Flash::success('News has been successfully updated');
        return redirect::back();
    }

Сообщение об ошибке

Заголовок столбца "Нарушение ограничения целостности" не может быть пустым.


person user3127109    schedule 10.04.2015    source источник
comment
Вы сделали столбец title уникальным в БД?   -  person mininoz    schedule 10.04.2015
comment
Нет, ни одно из полей не уникально. И даже данные хранятся в базе данных. Но это тоже вызывает ошибку.   -  person user3127109    schedule 10.04.2015
comment
Что за сообщение об ошибке?   -  person mininoz    schedule 10.04.2015
comment
В нем говорится, что заголовок столбца "Нарушение ограничения целостности" не может быть нулевым.   -  person user3127109    schedule 10.04.2015
comment
Когда я пытаюсь, как if (! Empty ($ result- ›title)) {сохранить данные} else {}, все работает нормально   -  person user3127109    schedule 10.04.2015


Ответы (1)


Ошибка возникает из-за того, что заголовок равен нулю, и попробуйте сохранить его в БД.

Есть 2 способа решить проблему

При миграции установите для столбца значение NULL.

$table->string('title')->nullable();

источник: http://laravel.com/docs/4.2/schema#adding-columns

или проверьте значение, и если оно равно null, установите заголовок как пустую строку

$news->title = ($result->news_title) ? $result->news_title : '' ;
person mininoz    schedule 10.04.2015