laravel Модель возвращает ноль при вызове другой функции из той же модели - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть Модель продукта, в которой у меня есть attribute function, который возвращает определенные данные.

Обычно, если я вызываю его с помощью Product::with(['attributes'])->active()->paginate(config('app.rec_limit'));, я получаю вывод.

, но я если я это сделаю, я не смогу получить доступ к этим или любым другим function данным в модели,

    protected $appends = ['product_attributes'];

    public function getProductAttributesAttribute() {
        return $this->attributes();
    }

    public function attributes() {
        return $this->hasMany(ProductAttribute::class);
    }

также, если я передам строку в getProductAttributesAttribute function, я получу эту строку в качестве вывода.

В чем может быть причина для пустого массива в качестве вывода?

1 Ответ

0 голосов
/ 20 апреля 2020

Измените ваш код: return $this->attributes(); возвращает красноречивый объект, а не коллекцию, как если бы вы все еще хотели выполнять другие запросы. Измените значение на return $this->attributes;, которое возвращает коллекцию

. Обратите внимание, что при использовании этого средства атрибуты выбираются для каждой модели продукта, что в дальнейшем может привести к проблемам с производительностью.

Идеальный способ - оставить его как модель отношений, тогда называйте это только тогда, когда вам это нужно

...