Всем привет. У меня 2 таблицы. Авторы и Книги (каждый со своими полями). В таблице с книгами есть поле ид автора, которое отображалось. Я через вюшку сделал так, что бы вместо ид автора в данной таблице отображалась имя автора из таблицы с авторами. Сделал экспорт таблицы Книг. Как и полагалось он экспортировал вместе с другими полями имя автора из др таблицы, а не ид.
Теперь я делаю импорт таблицы.
И мне нужно производить поиск в бд по имени и найти ид автора, подставив его.
Или цитирую слова своего препода
автора тебе на надо создавать нового. надо по его имени производить поиск в бд и получать его ид, чтобы потом подставить его в создаваемую модель книги
нет. ничего не надо убирать. ты грузишь данные из файла. вместо ид автора у тебя его имя. ты берешь это имя, делаешь запрос к бд (ищешь по имени автора), получаешь данные по этому автору и берешь из них его ид
Вот код импорта. Нужно изменить строку с $model-> id_avtor1 = $row [4];
public function actionUpload()
{
$model = new UploadForm();
if (Yii::$app->request->isPost ) {
$model->fName = UploadedFile::getInstance($model, 'fName');
if ($fName =$model->upload()) {
//путь к файлу
if (($handle = fopen($fName, 'r')) !== false) {
while (($row = fgetcsv($handle, 1000, ',')) !== false) {
if ($row[0]=='ID' and $row[0]=='#'){
continue;}
$model = new Kniga1();
$model->name = $row [2];
$model-> id_avtor1 = $row [4];
$model->creation_date = $row [5];
if ($model->validate()) {
$model->save();
} else {
$model->save();
print_r($model->errors);
}
}
fclose($handle);
};
//... код после импорта
}
}
return $this->render('upload', ['model' => $model]);
}