Есть модель 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;
}
}