как добавить поле автоинкремента в laravel API-ресурс - PullRequest
0 голосов
/ 19 апреля 2020

Я хочу составить рейтинг для своих пользователей на основе их баллов, и я хочу упорядочить их по баллам и установить для них поле рейтинга. я использую laravel ресурс API и в ресурс я хочу добавить поле с именем ranking и ++ это так, чтобы пользователь порядка был ранжирован от 0 до n

   $data = User::with('city')
                    ->withCount('point')
                    ->orderByDesc('points_count')
                    ->get()
        ;
        $data = $data->where('points_count', '!=', 0);
        return UserPointResource::collection($data);

и вот мой ресурс :

 return [
            "id"       => (int)$this->id,
            "fullname" => $this->fullname,
            "city"     => $city ? $city->name,
            "count"    => (int)$this->points_count,
        ];

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

1 Ответ

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

Вы можете определить функцию в Пользовательской модели следующим образом:

    /**
 * Get the User's Rank.
 * @param int $id
 * @return int
 */
public function getRank($id){

    $collection = User::with('city')
        ->withCount('point')
        ->orderByDesc('points_count')
        ->get();

    $data       = $collection->where('id', $id);

    //using array keys to find user rank
    $value      = $data->keys()->first() + 1;


    return $value;
}

Затем в вашем UserResource вы вызываете функцию следующим образом:

 return [
        "id"       => (int)$this->id,
        "fullname" => $this->fullname,
        "city"     => $city ? $city->name,
        "count"    => (int)$this->points_count,
        "rank"     => $this->getRank((int)$this->id),
    ];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...