Как запросить дополнительный столбец (кроме братьев и сестер), добавленный в сводную таблицу? - PullRequest
0 голосов
/ 22 марта 2020

Вот моя схема таблицы 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 Ответ

0 голосов
/ 23 марта 2020

Я понял это. Мне пришлось сделать 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)")
    }
}
...