ITwoolf
@ITwoolf

Как сделать импорт csv файлов в таблицу/БД?

Добрый день. Постараюсь максимально локанично описать свою проблему. У меня есть табличка книг с полями ID, Name, Описание, Автор, Creation_Date и Date_Of_Change. Колонки во вюшке я делал с помощью DynaGrid и поэтому у меня там уже есть возможность делать экспорт товаров в формате csv. Файлы при экспорте сохраняются в загрузке.
- Я добавил во вюшке еще одну кнопку "Импорт"
- Прописал в контроллере код для импорта, которую я связал с кнопкой Импорта.
Код в контроллере:
public function actionImporter()
    {
        //путь к файлу
        $pathToFile = Yii::getAlias('@way7');
        //файл можно загрузить с помощью формы

        if (!file_exists($pathToFile) || !is_readable($pathToFile)) {
            //... код, если файл отсутствует
        }
        $data = array();

        if (($handle = fopen($pathToFile, 'r')) !== false) {
            $i = 0;

            while (($row = fgetcsv($handle, 1000, $delimiter)) !== false) {
                $model = new Kniga1();
                $model->name = $row [0];
                $model->creation_date = $row [1];
                $model->id_avtor1 = $row [2];

                if ($model->validate()) {
                    $model->save();
                } else {
                    //... код в случае ошибки сохранения
                }
            }
            fclose($handle);
        };
        //... код после импорта
    }


Я предположил, что для импорта ему нужно указать путь, откуда брать файлы. При экспорте, экспорт таблицы в формате csv загружается в загрузки. Поэтому я подумал, что импорт должен происходить из этой папки. Для этого я зашел в папку params-local.php (как писали в инете) и создал новый алиас:
Yii::setAlias('@way7', '/Загрузки/grid-export');

И данный алиас (@way7) я прописал в контроллере, когда писал код для импорта.
Но когда я кликаю на кнопку "Импорт", то браузер мне выдает ошибку fopen(/Загрузки/grid-export): failed to open stream: No such file or directory

Скажите пожалуйста что я делаю не так и как нужно сделать? Возможно решение данной проблемы простая, но я новичок и поэтому сложно.
  • Вопрос задан
  • 475 просмотров
Решения вопроса 1
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
Пишет, что директория не найдена. У вас путь к папке не полный. Вы указываете /загрузки....
Начинаете искать от корня. Не уверен я в том, что загрузки у вас находятся в корне. Скорее всего они в папке web. Ваш путь должен быть полным от корня к этой папке. Либо используете Алиал web. @web/загрузки/....
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы