cakephp entity-relationship model-driven cakephp-1.2

Vista de varios modelos de CakePHP



entity-relationship model-driven (3)

Estoy creando un sitio web en CakePHP y estoy algo nuevo en él. No pude encontrar buenos recursos en este asunto, así que ahí tienes:

Tengo una estructura de tres tablas para registrar usuarios: Users , Addresses y Contacts . Tengo que crear una vista con información de las tres tablas como:

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

¿Cuál es la mejor manera de lidiar con esta situación? Especialmente para ahorrar . Creando un nuevo Modelo para representar esto, que tendrá un método save() sí mismo (Tal vez una vista sql en la base de datos) Crea un Controlador para manejar esta Vista que bind o unbind la información

Me pregunto cómo manejaré ambos contactos, ya que serán 2 INSERT diferentes.

Cualquier sugerencia o recursos de los que pueda excavar me alegraré.


3 modelos: Usuario, Dirección, Contacto

User hasOne Address, Contact Address belongsTo User Contact belongsTo User

en su modelo, usted define esto así:

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

Para hacer esta vista, necesita las direcciones ind del campo user_id y las tablas de contactos

Para usar esto en una vista, simplemente llame a un hallazgo en el modelo de Usuario con un recursivo de uno (y, por cierto, el controlador de usuario solo usa el modelo de Usuario).

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

Esto dará como resultado esta matriz para su vista:

array( ''Use'' => array( ''id'' => 666, ''name'' => ''Alexander'' ), ''Address'' => array( ''id'' => 123, ''zip'' => 555 ), ''Contact'' => array( ''id'' => 432, ''phone'' => ''555-1515'' ));



Si usa el último código 1.2, consulte Model :: saveAll en la API

p.ej. Tu vista puede verse más o menos así:

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

Luego, en el método de agregar controlador de usuarios, tendrías algo así 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''); } ...

En su modelo de Usuario necesitará algo como:

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

¡Espero que ayude!

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