Ресурсы API просто форматируют способ возврата данных.Это не влияет на ваши отношения.Единственное, что вам нужно сделать, это передать объект / коллекцию (в зависимости от случая) в класс ресурсов API.
Коллекции ресурсов
Если вы возвращаете коллекцию ресурсовили постраничный ответ, вы можете использовать метод collection
при создании экземпляра ресурса в вашем маршруте или контроллере:
use App\User;
use App\Http\Resources\User as UserResource;
Route::get('/user', function () {
return UserResource::collection(User::all());
});
Как видите, просто используйте его:
TournamentsController.php
use App\Http\Resources\TournamentResource;
//
public function index()
{
$tournaments = auth()->user()->tournaments;
return TournamentResource::collection($tournaments);
}
Проверьте документацию относительно этого аспекта.Кроме того, чтобы загрузить дочерние элементы (championship
), вы можете Eager Load / Lazy Eager Load отношения элементов.
Наблюдение:
В отношениях, когда вы используете его как метод (auth()->user()->tournaments()
), вы получаете доступ к самой связи, полезно, если вы хотите продолжать ограничивать отношения.Когда вы используете его в качестве атрибута (auth()->user->tournaments
), вы получаете доступ к результатам запроса.
Проверьте этот ответ для лучшего объяснения.