PHPackages                             proai/laravel-transporter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. proai/laravel-transporter

ActiveLibrary[API Development](/categories/api)

proai/laravel-transporter
=========================

Laravel package for building GraphQL apis.

1.0.0(2d ago)06↑400%MITPHPPHP ^8.3CI passing

Since Apr 5Pushed 2d agoCompare

[ Source](https://github.com/ProAI/laravel-transporter)[ Packagist](https://packagist.org/packages/proai/laravel-transporter)[ Docs](http://github.com/proai/laravel-transporter)[ RSS](/packages/proai-laravel-transporter/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (16)Versions (2)Used By (0)

Laravel Transporter
===================

[](#laravel-transporter)

A Laravel package for building GraphQL APIs backed by Eloquent models. Transporter bridges GraphQL schema definitions (SDL) with Laravel's Eloquent ORM, providing automatic field resolution, batched data loading, authorization via policies, cursor-based pagination, and more.

Requirements
------------

[](#requirements)

- PHP 8.2+
- Laravel 12 or 13

Installation
------------

[](#installation)

```
composer require proai/laravel-transporter
```

The service provider is auto-discovered by Laravel.

Create the schema cache directory:

```
mkdir -p storage/framework/graphql
```

Quick Start
-----------

[](#quick-start)

### 1. Define your GraphQL schema

[](#1-define-your-graphql-schema)

Create a `.gql` or `.graphql` file in `resources/graphql/`:

```
# resources/graphql/app.gql
type Query {
    user(id: ID!): User
        @resolver(class: "App\\GraphQL\\Resolvers\\UserResolver")
    users: [User!]! @resolver(class: "App\\GraphQL\\Resolvers\\UsersResolver")
}

type User {
    id: ID!
    name: String!
    email: String!
    posts: [Post!]!
    postsConnection(first: Int!, after: String): PostConnection! @connection
    postsCount: Int! @count
}

type Post {
    id: ID!
    title: String!
    body: String!
}

type PostConnection {
    edges: [PostEdge!]!
    nodes: [Post!]!
    pageInfo: PageInfo!
}

type PostEdge {
    node: Post!
    cursor: String!
}

type PageInfo {
    hasPreviousPage: Boolean!
    hasNextPage: Boolean!
    startCursor: String
    endCursor: String
}
```

### 2. Optionally add PHP configuration

[](#2-optionally-add-php-configuration)

Create a `.php` file with the same name to mutate types:

```
// resources/graphql/app.php
