Как запросить дополнительный столбец (кроме братьев и сестер), добавленный в сводную таблицу?

Вот моя схема таблицы RecipeIngredientPivot, к которой я добавил дополнение quantity столбец.

-----------------------------------------------------
 id | ingredientID | recipeID | quantity
-----------------------------------------------------
| 1 | A001         | R001       | 100               |
| 2 | A002         | R001       | 50                |
| 3 | C004         | R001       | 23                |
| 4 | A001         | R002       | 75                |

Мне удалось создать quantity столбец в сводную таблицу с ingredient_id а также recipe_id как братья и сестры, используя только Pivot вместо ModifiablePivot.

extension RecipeIngredientPivot: Pivot {
    init(_ recipe: Recipe, _ ingredient: Ingredient, _ quantity: Double) throws {
        self.recipeID = try recipe.requireID()
        self.ingredientID = try ingredient.requireID()
        self.quantity = quantity
    }
}

Однако я не знаю, как запросить и получить количество рецепта.

extension Recipe {
    var ingredients: Siblings<Recipe, Ingredient, RecipeIngredientPivot> {
        return siblings()
    }

    var quantities: [Double] {
        // Not sure how to get this.
    }
}

Любая помощь очень ценится.

1 ответ

Я понял. Я должен был сделатьquery(on.req) & pivot(on: req) на siblings() и дождитесь успешного завершения обоих, прежде чем сопоставить результаты.

let ingredientFuture = try recipe.ingredients.query(on: req).all()
let pivotFuture = try recipe.ingredients.pivots(on: req).all()

return ingredientFuture.and(pivotFuture).map { ingredients, pivots in
    for (ingredient,pivot) in zip(ingredients, pivots) {
        print("\(ingredient) - \(pivot.quantity)")
    }
}
Другие вопросы по тегам