Всем привет.
НУжно организовать хранение информации о файлах в базе. Сейчас я сделал структуру таблиц таким образом:
Таблица с файлами:
files
- id int [pk, increment]
- path varchar
- mime_type varchar
- size int
Таблица с картинками:
pictures
- id int [pk, increment]
- width int
- height int
- file_id [fk] - наследуемы ключ (связь 1 к 1 с таблицей files)
Модели сейчас такие:
class File extends BaseModel
{
protected $table = 'files';
protected $fillable = ['path', 'mime_type', 'size'];
}
class Picture extends BaseModel
{
protected $table = 'pictures';
protected $fillable = ['width', 'height', 'file_id'];
public function file() {
$this->hasOne(File::class);
}
}
Сейчас пытаюсь заполнить faker-ом фейковые данные и не знаю как организовать сохранение информации в базу:
если файл НЕ картинка, то просто сохраняем в инфо о нем таблицу files, если картинка, то получаем нужную информацию и сохраняем не только в таблицу files, но и в таблицу pictures.
Фейкер на входе получает класс модель. Но в моем случае он должен получить скорее какой-то другой класс, возможно хэндлер, которрый получит данные от фейкера и запишет как надо в базу.
Подскажитке как подобное можно организовать? Можно ли через фейкер создавать не модель, а другую модель?