CakePHP - 两种HABTM模型的新记录

So, I'm starting to believe that isn't possible but I'm hoping someone will prove me wrong. The crux of the question below is that I want to add new records for two HABTM associated models in the same form submission.

Bare with me while I paint a quick picture of my model associations - I have two models: Booking & PaymentItem. These two have an HABTM relationship. I've joined them with a BookingPaymentItem model (I needed to access this model at a later stage to track payments made).

It's not important to know all the fields in the bookings table but here are the concerning ones in the payment items model:

**payment_items - table**
id
name
description
price

**booking_payment_items**
id
booking_id
payment_item_id
quantity

So, in the Bookings add view, I have all the booking fields I want to add. Now, on form submission, I need to have two new payment items created - accommodation and deposit. So, my idea is to add some hidden fields and only display fields: accommodation cost and deposit amount to the user. These two new payment items need to be associated to the also newly created booking (and by extension, BookingPaymentItem entry).

Here's the form setup in my add view:

<? echo $this->Form->hidden('PaymentItem.1.id', array('value'=>$this->Text->uuid(), 'div' => false)); ?>
<? echo $this->Form->input('PaymentItem.1.price', array('label' => 'Total Tariff','div' => false)) ?>
<? echo $this->Form->hidden('PaymentItem.1.name', array('value'=>'Accommodation', 'div' => false)); ?>
<? echo $this->Form->hidden('PaymentItem.1.description', array('value'=>'Accommodation', 'div' => false)); ?>
<? echo $this->Form->hidden('PaymentItem.2.id', array('value'=>$this->Text->uuid(), 'div' => false)); ?>
<? echo $this->Form->input('PaymentItem.2.price', array('label' => false,'div' => false)); ?>
<? echo $this->Form->hidden('PaymentItem.2.name', array('value'=>'Deposit', 'div' => false)); ?>
<? echo $this->Form->hidden('PaymentItem.2.description', array('value'=>'Deposit', 'div' => false)); ?>

Here's the request->data variable dump:

array(
'Booking' => array(
    'property_id' => 'COC1127',
    'checkin' => '2013-01-23',
    'checkout' => '2013-01-30',
    'guest_id' => '02',
    'ownervisible' => '1',
    'adults' => '1',
    'children' => '0',
    'infants' => '0',
    'deposit_due_date' => '2013-01-16'
),
'PaymentItem' => array(
    (int) 1 => array(
        'id' => '50f4612d-3858-4d68-9dee-0b70c2e1e283',
        'price' => '1200',
        'name' => 'Accommodation',
        'description' => 'Accommodation'
    ),
    (int) 2 => array(
        'id' => '50f4612d-a334-4615-ba8d-0b70c2e1e283',
        'price' => '400',
        'name' => 'Deposit',
        'description' => 'Deposit'
    )
)
)

Results:

  1. Booking model saves perfectly as expected
  2. No payment item entry recorded
  3. No booking payment item entry recorded

I played around with this a bit and got more saved but nothing that matched what I needed to do.

I need the booking added, the two payment items added and the associating booking_payment_item entry added with the ids.....

Any ideas?