Задать вопрос

Как получить данные в атрибутах модели из связанной таблицы Laravel и вывести это json без ошибки?

Привет!
Столкнулся с интересной проблемой в Laravel.

Есть две модели Item и ItemImages.
Мне надо получить json со всеми items, всё работает пока не появился атрибут 'photo' (первое фото)
class Item extends Model
{
    protected $appends = [
        'photo',
    ];

    public function imgs()
    {
        return $this->hasMany(ItemImage::class);
    }

    public function getPhotoAttribute()
    {
        $img = $this->imgs->first();
        return $img->src;
    }
}

В итоге.

dd(Item::all()); //работает
response()->json(['items'=>Item::all()]) //ошибка

Во вьюхах всё работает, а вот попытка получить json выдает "PHP Fatal error: Allowed memory size of 134217728 bytes" в тинкере или 504 error в браузере. Убираю атрибут 'photo' - работает.

help!
  • Вопрос задан
  • 214 просмотров
Подписаться 2 Средний 1 комментарий
Помогут разобраться в теме Все курсы
  • Loftschool
    Комплексное обучение PHP
    6 недель
    Далее
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Skillbox
    Профессия PHP-разработчик с нуля до PRO
    7 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
hrhr99
@hrhr99 Автор вопроса
Решение в ограничениях Лары.

Если хочешь json, нельзя в атрибутах модели обращаться к связанным таблицам текущей модели. Выдает ошибку переполнения памяти.

В документации об этом не написано.
Ответ написан
Ваш ответ на вопрос

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

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