Михаил Балагура, skipOnEmpty по умолчанию true, так что это бессмысленно.
Метод upload() используете и для загрузки документа и для загрузки файлов?
Повторю, использовать два раза save() не нужно, необходимо сделать так, чтобы использовалось один раз.
Михаил Балагура, UploadedFile::getInstance применяется для загрузки одного файла, а UploadedFile::getInstances для загрузки нескольких.
Ошибка выпадает когда Вы пытаетесь сохранить один файл или несколько?
Возможно необходимо использовать цикл.
Смотрите внимательней, что у Вас приходит в upload()?
AlexAll, немного ввёл в заблуждение.
В htaccess у Вас вроде бы как прописана переадресация на admin, но ещё надо настроить urlmanager.
Параметр showScriptName установить в false, тогда не будет отображаться в адресной строке index.php
AlexAll, тогда придумайте название для админки подлиней и бессмысленней.
типа "superpuperadminkascritajaotvseh", тогда точно никто не догадается какой адрес у админки.
Пусть видят вход в админку, что с этого?
Uber Noob, тип данных и длина значения должны совпадать. Так же желательно установить индекс на поле id в таблице data.
И ставить ключ не на primary key в data, а создать связующее поле, например user_id, вот на него и ставить ключ.