HABTM jest wyprzedany. Często nie spełnia potrzeb, na przykład gdy masz dodatkowe dane do przechowywania. Lepiej będzie, jeśli zrobisz relację ma wiele/należy do między modelami.
Zaczerpnięte z książki CakePHP:
W twoim przypadku sugerowałbym wykonanie LineItem
model i łączenie wszystkiego w ten sposób:
Order
hasManyLineItem
LineItem
należyToOrder
,Product