Domanda

Sono molto nuovo alla torta e mi stavo chiedendo come sarei in grado di creare un nuovo utente e poter anche creare i dettagli di contatto

Database è come

Utenti

    .
  • user_id
  • contact_detail_id
  • Password
  • roole_id
  • Username

Contact_Details

    .
  • contact_detail_id
  • indirizzo1
  • indirizzo2

e molti altri campi

Nel modello utente ho assegnato $ HASONE= array ('ContactDetail');

Poiché l'utente avrà un contactDetail

Ora quello che devo sapere è come sarebbe stato salvato nel metodo aggiuntivo come molti hanno detto di usare il salvasociato anche se questo non sembra funzionare.

La vista Aggiungi è come così e dalla mia comprensione è corretta

<?php echo $this->Form->create('User', array('action' => 'add')); ?>
    <fieldset>
        <legend><?php echo __('Add User'); ?></legend>
    <?php
        echo $this->Form->input('User.username');
                echo $this->Form->input('User.password');
                echo $this->Form->input('roles');

                echo $this->Form->input('ContactDetail.name');
                echo $this->Form->input('ContactDetail.surname');
                echo $this->Form->input('ContactDetail.address1');
                echo $this->Form->input('ContactDetail.address2');
                echo $this->Form->input('ContactDetail.country');
                echo $this->Form->input('ContactDetail.email');
                echo $this->Form->input('ContactDetail.fax');


          ?>      
                <label>Are you interested in buying property in Malta?</label>
          <?php  
                $interest_buy = array('0'=>'no','1' => 'yes');
                echo $this->Form->input('ContactDetail.interest_buy_property',array('type'=>'radio','options'=>$interest_buy,'value'=>'0','legend'=>FALSE));
          ?>      
                <label>Are you interested in renting property in Malta?</label>
          <?php  
                $interest_rent = array('0'=>'no','1' => 'yes');
                echo $this->Form->input('ContactDetail.interest_rent_property',array('type'=>'radio','options'=>$interest_rent,'value'=>'0','legend'=>FALSE));
                echo $this->Form->input('ContactDetail.mobile');
                echo $this->Form->input('ContactDetail.phone');
                echo $this->Form->input('ContactDetail.postcode');
                echo $this->Form->input('ContactDetail.town');

                echo $this->Form->input('ContactDetail.newsletter',array('type'=>'checkbox','label'=>'Would you like to register for the newsletter?' ,'checked'=>'1','legend'=>FALSE,));
         ?>       

    </fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
.

È stato utile?

Soluzione

Si prega di vedere Arun Spiegazione su cosa inserire prima il tuo modello e poi puoi usare $this->User->saveAll();o $this->User->saveAssociated(); per salvare entrambe le tabelle allo stesso tempo.

Se si desidera salvare prima ContactDetail e quindi salvare l'utente, è possibile eseguire questa seconda opzione, ma non è raccomandato.

 $this->User->ContactDetail->create(); 
 $this->User->ContactDetail->save($this->request->data);`
 this->request->data['User']['contact_detail_id'] = $this->User->ContactDetail->id`;
 $this->User->Create();
 $this->User->save($this->request->data);`
.

Ma preferisco la prima opzione, per provare nuovamente la prima opzione,

Nota: assicurati che il contactDetail e la relazione utente ci siano nel modello come questo in modello utente

public $hasOne= array(
    'ContactDetail'   => array(
        'className' => 'ContactDetail',         
        'foreignKey' => 'contact_detail_id'
    )
);
.

Spero che aiuti.

Altri suggerimenti

Nel primo sguardo nel tuo database, è necessario utilizzare la seguente struttura del database, questo ti aiuterà in una direzione:

User Model

id
username
password
role_id
.

ContactDetail Model

id
user_id
address1
address2
.

Definisci la relazione del modello hasMany nel modello User con ContactDetail come:

$hasMany => array('ContactDetail');
.

Ora popola una serie di dettagli di contatto con la coppia (id => address1) utilizzando:

$this->ContactDetail->find('list', array('conditions' => array('user_id' => $user_id)),
                                         'fields' => array('ContactDetail.id', 'ContactDetail.address1')));
.

Ora per salvare i dettagli associati, utilizzare metodo salvasociato .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top