Laravel Преобразовать атрибут модели в объект (класс)

StalkerClasses

Новичок
Есть обычная модель
class Post extended Model {
}


Модель имеет поля:
- id
- name
- pic

Делая выборку получаешь значения:
- 1
- название
- pic100.png


У меня есть PHP-класс который обрабатывает изображения - ему на входе передается "pic100.png" название картинки и он по нему возвращает информацию по картинке (размеры, полный путь и т.д.)

Можно ли как-то преобразовать атрибут модели "pic" в мой объект (класс) когда получаешь значение, что бы выбирая данные из модели на выходе было:
- 1
- название
- вместо pic100.png - вставляется мой класс который выводит информацию об этой картинке


---
Посмотрел мутаторы - но они приводят примеры преобразования только строк:
public function getFullNameAttribute() {
return "{$this->first_name} {$this->last_name}";
}

Полагаю это близко к теме - но не совсем пойму как это работает?,
Код:
/**
 * The attributes that should be cast.
 *
 * @var array
 */
protected $casts = [
    'options' => AsArrayObject::class,
];
 

Adelf

Administrator
Команда форума
Полагаю это близко к теме - но не совсем пойму как это работает?,
там настолько просто написано как это сделать. или даже банально посмотреть как сделан AsArrayObject класс... может всё-таки сам сообразишь?
 

StalkerClasses

Новичок
там настолько просто написано как это сделать. или даже банально посмотреть как сделан AsArrayObject класс... может всё-таки сам сообразишь?
Все замечательно.
А если объект (класс) использует запрос к БД?
Получается выбирая 30 картинок - будет 30 запросов SELECT что бы преобразовать этот атрибут...
Можно ли как-то 1 запросом вставить коллекцию.
 

Adelf

Administrator
Команда форума
А ты почитай документацию. по Eloquent. там есть ответ на твой вопрос
 
Сверху