Laravel - whenLoaded () и count () на ресурсе - PullRequest
0 голосов
/ 04 октября 2019

У меня есть модель для коллекции, которая содержит активы.

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

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

return [
        'id' => $this->id,
        'name' => $this->name,
        'description' => $this->description,
        'enabled' => $this->enabled,
        'sticky' => $this->sticky,
        'created_at' => $this->created_at,
        'updated_at' => $this->updated_at,
        'asset_count' => $this->assets->where('enabled', 1)->count(),
        'assets' => Asset::collection($this->whenLoaded('assets')),
 ];

Есть ли способ по-прежнему использовать ресурс, возвращать счетчик активов, но в результате не вызывать whenLoaded?

1 Ответ

0 голосов
/ 04 октября 2019

Попробуйте это

Вы можете просто создать новые отношения, такие как liveassets

function liveassets(){
 return $this->hasMany('assets')->where('enabled','=', 1);
}

return [
    'id' => $this->id,
    'name' => $this->name,
    'description' => $this->description,
    'enabled' => $this->enabled,
    'sticky' => $this->sticky,
    'created_at' => $this->created_at,
    'updated_at' => $this->updated_at,
    'asset_count' => $this->liveassets->count(),
    'assets' => $this->liveassets,
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...