1

我想在同一个表单提交中为两个 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'
    )
)
)

结果:

  1. 预订模型按预期完美保存
  2. 没有记录付款项目条目
  3. 未记录预订付款项目条目

我玩了一下这个,得到了更多的保存,但没有什么符合我需要做的。

我需要添加预订,添加两个付款项目,并添加关联的 booking_payment_item 条目与 ID。

4

0 回答 0