CakePHP SaveAll ile 3 modelleri kullanın

0 Cevap php

Ben durumu şu var:

Ben müşterilerimizin bilgilerini saklamak için bir adres-uygulama geliştiriyorum.

Ben şu db-yapıyı var:

Clients hasMany Addresses
Addresses belongsTo Client
Addresses hasMany AddressEmails and AddressPhones

Birisi şimdi yeni bir müşteri ekler varsa, 1 e-posta ve 1 numaralı telefonunuza onun birincil adres kaydedilmiş olmalıdır.

Ben aşağıdaki kod ile müşteri eklenti görünümünde bunu ve istemci denetleyicisi SaveAll-yöntemini ararsanız bu kısmen çok iyi çalışıyor:

 <?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');
 ?>

Ama bu bakış üzerinde e-posta ve telefon numarasını kaydetmek için nasıl hiçbir fikrim yok. Yargılanan AddressEmail.0.email gibi düşünüyor ama bu işe yaramadı.


Anladım:

Nik'ın nakledilen çözümü ile gayet iyi çalışıyor, ben şimdi $ this-> Client-> Adres-> SaveAll ($ this-> data) çağırarak ama benim gibi bu eklenti görünümü ayarlamak zorunda değilim:

<?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');
?>

Ben şimdi Adres-Modelden () metodu SaveAll arıyorum yana sıfır artık gerekli değildir!

0 Cevap