私は次の状況にあります:
クライアントの詳細を保存するためのアドレスアプリケーションを開発しています。
私は次のdb-structureを持っています:
Clients hasMany Addresses
Addresses belongsTo Client
Addresses hasMany AddressEmails and AddressPhones
誰かが新しいクライアントを追加した場合、1つの電子メールと1つの電話番号を持つ彼のプライマリアドレスを保存する必要があります。
次のコードを使用してクライアントのadd-viewでこれを実行し、client-controllerでsaveAll-methodを呼び出すと、これは部分的に非常にうまく機能します。
<?php
echo $this->Form->input('client_group_id');
echo $this->Form->input('company');
echo $this->Form->input('firstname');
echo $this->Form->input('lastname');
echo $this->Form->input('www');
echo $this->Form->input('Address.0.is_standard', array('type' => 'hidden', 'value' => '1'));
echo $this->Form->input('Address.0.street');
echo $this->Form->input('Address.0.zip');
echo $this->Form->input('Address.0.city');
?>
しかし、このビューでメールアドレスと電話番号を保存する方法がわかりません。AddressEmail.0.emailのように考えましたが、うまくいきませんでした。
とった:
Nikが投稿したソリューションでは正常に機能しているので、$ this-> Client-> Address-> saveAll($ this-> data)と呼んでいますが、add-viewを次のように調整する必要がありました。
<?php
echo $this->Form->input('client_group_id');
echo $this->Form->input('company');
echo $this->Form->input('firstname');
echo $this->Form->input('lastname');
echo $this->Form->input('www');
echo $this->Form->input('Address.is_standard', array('type' => 'hidden', 'value' => '1'));
echo $this->Form->input('Address.street');
echo $this->Form->input('Address.zip');
echo $this->Form->input('Address.city');
echo $this->Form->input('AddressEmail.0.type', array('type' => 'hidden', 'value' => 'Standard'));
echo $this->Form->input('AddressEmail.0.email');
echo $this->Form->input('AddressPhone.0.type', array('type' => 'hidden', 'value' => 'Standard'));
echo $this->Form->input('AddressPhone.0.number');
?>
Address-ModelからsaveAll()-メソッドを呼び出しているので、ゼロはもう必要ありません!