Eloquent - загрузить аксессор вместе с данными модели - PullRequest
0 голосов
/ 05 ноября 2018

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

Средства доступа были бы предварительно загружены:

protected $appends = [
  'status',
] 

Но если я избавлюсь от энергичной загрузки и хочу включить этот аксессор:

public function getStatusAttribute() {
        return self::STATUS_ACTIVE;
    }

Тогда я могу сделать это в соответствии с документацией:

$prod = \App\Product::find(736)->status;

Это работает, но я не получаю базовые данные модели.

Я не могу сделать: return $prod = \App\Product::find(736)->with('status')->first()

выдает ошибку: Call to undefined relationship [status] on model

Итак, как мне добавить такие методы доступа для включения в данные модели?


Edit: Как прокомментировал Штауденмейр, я могу сделать \App\Product::find(736)->append('status');

Это решает проблему для единичных результатов. Но как мне добавить данные для многих результатов? Ни append, ни appends не работают:

Это: \App\Product::whereIn([34, 55])->appends('status'); результаты в "Method appends does not exist.",

Я видел, что вы можете использовать "appends" on "-> paginate ()"

$products = \App\Product::whereIn([34, 55])
                    ->paginate(12)
                    ->appends('status');

Но это добавляет его в качестве строки запроса к URL. Очень странно - я хочу добавить его так же, как для одного результата в ответе json.

1 Ответ

0 голосов
/ 05 ноября 2018

Сначала вы не получили коллекцию, а затем получили доступ к атрибуту результата.

$prod = \App\Product::find(736);

$status = $prod->status;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...