FitTech
@FitTech

Сохранить массив данных в Yii2?

Есть модель Book (AciveRecord), в данной модели есть связь hasMany(books_id => id) с таблицей BookFiles(AciveRecord).
Есть одна форма, которая добавляет новую книгу в таблицу Book и файлы в таблицу BookFiles одновременно.

Подскажите, пожалуйста, как мне реализовать сохранение книги и массива файлов в таблицы одновременно с проверкой если такой файл уже есть, то update.

Сейчас пробую делать так, но не сохраняется:
class BookForm extends Model 
{
    public $title;
    public $book;
    private $model;
    private $bookFiles;
 
/**
     * @param Book $model
     */
    public function setModel(Book $model)
    {
        $this->model = $model;
        $this->title = $model->title;

        $this->bookFiles = $model->getBookFiles()->All() ?: new BookFile();
    }

    public function save()
    {
        if($this->validate()) {

            $this->model->title = $this->title;

            if (is_array($this->book)) {
                $this->bookFiles->name = $this->book['name'];
                $this->bookFiles->path = $this->book['path'];
                $this->bookFiles->base_url = $this->book['base_url'];
            } else {
                throw new NotFoundHttpException();
            }

            if($this->model->save(false) && $this->bookFiles->save(false)) {
                return true;
            }
        }

        return false;
    }

}
  • Вопрос задан
  • 926 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Fetur
В карман за ответом не полезу
Ну так вроде очевидно, если у книги нулевой id, значит save, есть id - update.
Ответ написан
Ваш ответ на вопрос

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

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