我想在同一个表单提交中为两个 HABTM 关联模型添加新记录。
我有两个模型:Booking 和 PaymentItem。这两者具有HABTM关系。我已经加入了 BookingPaymentItem 模型(我需要在稍后阶段访问此模型以跟踪付款)。
了解预订表中的所有字段并不重要,但以下是付款项目模型中的相关字段:
**payment_items - table**
id
name
description
price
**booking_payment_items**
id
booking_id
payment_item_id
quantity
因此,在“预订”添加视图中,我拥有所有要添加的预订字段。现在,在提交表单时,我需要创建两个新的付款项目——住宿和押金。所以,我的想法是添加一些隐藏字段并且只显示字段:住宿费用和存款金额给用户。这两个新的付款项目需要与新创建的预订相关联(并且通过扩展,BookingPaymentItem 条目)。
这是我添加视图中的表单设置:
<? 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)); ?>
这是请求->数据变量转储:
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'
)
)
)
结果:
- 预订模型按预期完美保存
- 没有记录付款项目条目
- 未记录预订付款项目条目
我玩了一下这个,得到了更多的保存,但没有什么符合我需要做的。
我需要添加预订,添加两个付款项目,并添加关联的 booking_payment_item 条目与 ID。