Есть сущность Video. Хочу разделить на FileVideo, YoutubeVideo и ещё несколько. Чтобы у каждой сущности была своя реализация getUrl() и getPreview(), но хранились все в одной таблице.
Можно ли это сделать стандартными инструментами Laravel? Чтобы можно было написать Video::all() и сразу получить коллекцию из сущностей с разными классами. Как вариант, хранить название сущности в отдельном столбце в БД.
Читаю документацию по 6-ой версии и нигде не вижу ничего подобного.
Нашёл ответ. Нужно переопределить методы newInstance и newFromBuilder, получилось следующее:
public function newInstance($attributes = [], $exists = false, $class = null)
{
if(!$class)
$model = new static((array) $attributes);
else
$model = new $class((array) $attributes);
$model->exists = $exists;
$model->setConnection(
$this->getConnectionName()
);
$model->setTable($this->getTable());
return $model;
}
public function newFromBuilder($attributes = [], $connection = null)
{
if(empty($attributes->type))
throw new Exception('Видео должно иметь атрибут type.');
if($attributes->type === 'file')
$class = FileVideo::class;
elseif($attributes->type === 'youtube')
$class = YoutubeVideo::class;
else
throw new Exception('Некорректный тип видео: ' . $attributes->type);
$model = $this->newInstance([], true, $class);
$model->setRawAttributes((array) $attributes, true);
$model->setConnection($connection ?: $this->getConnectionName());
$model->fireModelEvent('retrieved', false);
return $model;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня есть код на Java, я могу превратить его в exe но как я понял это плохоКак сделать так чтобы я мог запускать его без команды, как обычное приложение
На вход приходит byte[] fileData, надо получить на выходе закодированный String
Всем привет , писал код и вдруг IDE начала выдавать ошибку "cannot resolve a symbol"Помогите пожалуйста решить проблему