Я пытаюсь заставить эту вещь работать:
Orders
belongsToMany Products
через ProductsOrders
ProductsOrders имеет составной ключ (order_id, product_id) — на этом этапе все работает отлично.
Что я хочу добавить новую ассоциацию (ProductsOrders
имеет много Extras
) потому что продукт может иметь несколько данных (соусы, стиль выпечки, напитки, …).
Итак, я создал Extras
модель с:
$this->belongsTo('Orders', [
'foreignKey' => 'order_id',
'joinType' => 'INNER'
]);
$this->belongsTo('Products', [
'foreignKey' => 'product_id',
'joinType' => 'INNER'
]);
И я добавил следующее в модели ProductsOrders
$this->hasMany("Extras", [
'foreignKey' => [
'order_id',
'product_id'
],
'bindingKey' => [
'order_id',
'product_id'
]
]);
При исправлении Order Entity это кажется правильным: (упрощенная версия)
object(App\Model\Entity\Order) {
'establishment_id' => (int) 1,
'state_id' => (int) 20,
'products' => [
(int) 0 => object(App\Model\Entity\Product) {
'id' => (int) 32,
'establishment_id' => (int) 1,
'category_id' => (int) 11,
'_joinData' => object(App\Model\Entity\OrdersProduct) {
'quantity' => (int) 4,
'price' => (float) 9,
'extras' => [
(int) 0 => object(App\Model\Entity\Extra) {
'title' => 'Sauces',
'choice' => 'Mayonaise',
'price' => (float) 0,
'[new]' => true,
'[accessible]' => [
'*' => true
],
'[dirty]' => [
'title' => true,
'choice' => true,
'price' => true
],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Extras'
}
],
'[new]' => true,
'[accessible]' => [
'*' => true
],
'[dirty]' => [
'quantity' => true,
'price' => true,
'tva' => true,
'extras' => true
],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'OrdersProducts'
},
}
]
}
Проблема в том, что при сохранении (с успехом) данных Extras в таблице нет … Это печально.
Где я ошибся? Или это все еще возможно?
Спасибо в авданс
Задача ещё не решена.
Других решений пока нет …