Pergunta

Estou criando um site em CakePHP e eu sou tipo de novo sobre ele. Eu não poderia encontrar bons recursos sobre este assunto, então lá vai:

Eu tenho uma estrutura de três mesa para registrar usuários: Users, Addresses e Contacts. Eu tenho que construir uma visão com informações de todos os três tabelas como:

Full Name:         [          ] (from Users)
Shipping Address:  [          ] (from Address)
Mobile Phone:      [          ] (from Contact)
e-Mail Address:    [          ] (from Contact)

O que é a melhor maneira de lidar com esta situação. Especialmente para salvar . Criando um novo modelo para representar este, que terá em si (talvez uma visão sql no banco de dados) um método save() Criar um controlador de lidar com essa visão que binds ou unbinds info

Ainda me pergunto como vou lidar com ambos os contatos como eles serão 2 diferente INSERT de

Qualquer dica ou recursos eu posso cavar de eu vou ser feliz.

Foi útil?

Solução

Se o seu usando o código mais recente 1.2, veja Model :: saveAll na API

por exemplo. Sua visão pode ser algo como isto:

echo $form->create('User', array('action' => 'add');
echo $form->input('User.name');
echo $form->input('Address.line_1');
echo $form->input('Contact.tel');
echo $form->end('Save');

Então em seu Users método de controlador add você teria algo como:

...

if($this->User->saveAll($this->data)) {
 $this->Session->setFlash('Save Successful');
 $this->redirect(array('action' => 'index'));
} else {
 $this->Session->setFlash('Please review the form for errors');
}

...

Em seu modelo de usuário que você vai precisar de algo como:

var $hasOne = array('Address', 'Contact');

Espero que ajude!

http://api.cakephp.org/class_model.html#49f295217028004b5a723caf086a86b1

Outras dicas

CakePHP permite que você facilmente mantém ligação entre os seus modelos usando relacionamento, veja http://book.cakephp.org/view/78/Associations-Linking-Models-Together para o detalhe completo. Então retreiving o usuário certo, você também vai receber "de graça", seu endereço e contato informações.

3 modelos: usuário, endereço, contato

User hasOne Address, Contact
Address belongsTo User
Contact belongsTo User

no seu modelo que você definir esta como esta:

class User extends AppModel {
var $name = 'User';
var $hasOne = array('Address','Contact');
..

Para fazer este ponto de vista, é necessário user_id ind campo endereços e Contatos tabelas

Para usar isso em uma visão, você simplesmente chamar um achado no modelo de usuário com uma recursiva de um (e btw, os usuários controlador somente utiliza o modelo User).

$this->User->recursive = 1;
$this->set('user', $this->User->find('first', array('conditions'=>array('id'=>666)));

Isto irá resultar em essa matriz para o seu ponto de vista:

array(
  'Use' => array(
     'id' => 666,
     'name' => 'Alexander'
),
  'Address' => array(
     'id' => 123,
     'zip' => 555
),
   'Contact' => array(
     'id' => 432,
     'phone' => '555-1515'
));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top