title: Vapor 3, Fluent 3 and Many-to-Many relations not working as expected
body: <p>Just started with Vapor 3 along with a MySQL database and I am having hard time figuring out the Relations part.</p>
  
  <p>I have created 2 models so far: <code>Movie</code> and <code>Actor</code>.
  A <code>Movie</code> can have many <code>Actor</code>s and an <code>Actor</code> can have many <code>Movie</code>s.</p>
  
  <p><code>Movie</code> Model:</p>
  
  <pre><code>import Vapor
  import FluentMySQL
  
  final class Movie: Codable {
  
      var id: Int?
      var name: String
      var synopsis: String
      var dateReleased: Date
      var totalGrossed: Float
  
      init(id: Int? = nil, name: String, synopsis: String, dateReleased: Date, totalGrossed: Float) {
          self.id = id
          self.name = name
          self.synopsis = synopsis
          self.dateReleased = dateReleased
          self.totalGrossed = totalGrossed
      }
  
  }
  
  extension Movie {
      var actors: Siblings&lt;Movie, Actor, MovieActor&gt; {
          return siblings()
      }
  }
  
  extension Movie: Content {}
  extension Movie: Parameter {}
  extension Movie: MySQLModel {}
  
  extension Movie: MySQLMigration {
      static func prepare(on conn: MySQLConnection) -&gt; Future&lt;Void&gt; {
          return MySQLDatabase.create(self, on: conn) { builder in
              builder.field(for: \.id, isIdentifier: true)
              builder.field(for: \.name)
              builder.field(for: \.synopsis)
              builder.field(for: \.dateReleased, type: .date)
              builder.field(for: \.totalGrossed, type: .float)
          }
      }
  }
  </code></pre>
  
  <p><code>Actor</code> Model:</p>
  
  <pre><code>import Vapor
  import FluentMySQL
  
  final class Actor: Codable {
  
      var id: Int?
      var firstName: String
      var lastName: String
      var fullName: String {
          return firstName + " " + lastName
      }
      var dateOfBirth: Date
      var story: String
  
      init(id: Int? = nil, firstName: String, lastName: String, dateOfBirth: Date, story: String) {
          self.id = id
          self.firstName = firstName
          self.lastName = lastName
          self.dateOfBirth = dateOfBirth
          self.story = story
      }
  
  }
  
  extension Actor {
      var actors: Siblings&lt;Actor, Movie, MovieActor&gt; {
          return siblings()
      }
  }
  
  extension Actor: Content {}
  extension Actor: Parameter {}
  extension Actor: MySQLModel {}
  
  extension Actor: MySQLMigration {
      static func prepare(on conn: MySQLConnection) -&gt; Future&lt;Void&gt; {
          return MySQLDatabase.create(self, on: conn) { builder in
              builder.field(for: \.id, isIdentifier: true)
              builder.field(for: \.firstName)
              builder.field(for: \.lastName)
              builder.field(for: \.dateOfBirth, type: .date)
              builder.field(for: \.story, type: .text)
          }
      }
  }
  </code></pre>
  
  <p>And I have also created a <code>MovieActor</code> model as a <code>MySQLPivot</code> for the relationship:</p>
  
  <pre><code>import Vapor
  import FluentMySQL
  
  final class MovieActor: MySQLPivot {
  
      typealias Left = Movie
      typealias Right = Actor
  
      static var leftIDKey: LeftIDKey = \.movieID
      static var rightIDKey: RightIDKey = \.actorID
  
      var id: Int?
  
      var movieID: Int
      var actorID: Int
  
      init(movieID: Int, actorID: Int) {
          self.movieID = movieID
          self.actorID = actorID
      }
  
  }
  
  extension MovieActor: MySQLMigration {}
  </code></pre>
  
  <p>And have added them to the migration section in the configure.swift file:</p>
  
  <pre><code>var migrations = MigrationConfig()
  migrations.add(model: Movie.self, database: .mysql)
  migrations.add(model: Actor.self, database: .mysql)
  migrations.add(model: MovieActor.self, database: .mysql)
  services.register(migrations)
  </code></pre>
  
  <p>All the tables in the database are being created just fine, but I am not receiving the relationship when calling the <code>get all movies</code> service. I am just receiving the <code>Movie</code>'s properties:</p>
  
  <pre><code>final class MoviesController {
  
      func all(request: Request) throws -&gt; Future&lt;[Movie]&gt; {
  
          return Movie.query(on: request).all()
      }
  
  }
  
  [
      {
          "id": 1,
          "dateReleased": "2017-11-20T00:00:00Z",
          "totalGrossed": 0,
          "name": "Star Wars: The Last Jedi",
          "synopsis": "Someone with a lightsaber kills another person with a lightsaber"
      },
      {
          "id": 3,
          "dateReleased": "1970-07-20T00:00:00Z",
          "totalGrossed": 0,
          "name": "Star Wars: A New Hope",
          "synopsis": "Someone new has been discovered by the force and he will kill the dark side with his awesome lightsaber and talking skills."
      },
      {
          "id": 4,
          "dateReleased": "2005-12-20T00:00:00Z",
          "totalGrossed": 100000000,
          "name": "Star Wars: Revenge of the Sith",
          "synopsis": "Anakin Skywalker being sliced by Obi-Wan Kenobi in an epic dual of fates"
      }
  ]
  </code></pre>
  
  <p>Your help would be appreciated! Thank you very much :)</p>