Asociacion HABTM

Una de las características mas destacadas de cake son las asociaciones en particular la de Has And Belongs To Many o muchos a muchos, que en muchas ocasiones nos sera de gran utilidad pero algunas veces nos dará algunos dolores de cabeza, a continuación tratare de redactar los problemas mas comunes relacionados con esta asociación.

Vamos a utilizar el siguiente ejemplo, supongamos que tenemos una tabla de usuarios y otra llamada vehículos, la asociación en sera que un vehículo tiene y pertenece a muchos usuarios y un usuario tiene y pertenece a muchos vehículos entonces crearemos otra tabla llamada usuarios_vehiculos, con los campos usuario_id y vehiculo_id.

// app/models/usuario.php
class Usuario extends AppModel {
 
    var $hasAndBelongsToMany = array('Vehiculo');
}
// app/models/vehiculo.php
class Vehiculo extends AppModel {
 
    var $hasAndBelongsToMany = array('Usuario');
}

En este punto ya tenemos listas las asociaciones para ser utilizadas, ya que para la tabla extra que creamos no es necesario crear el modelo ya que utiliza “on the fly” , pero si desean ahorrarse unos cuantos dolores de cabeza como lo hice yo, les recomiendo amplia mente crear el modelo de la tabla en cuestión y asignarle las asociaciones respectivas.

// app/models/usuarios_vehiculo.php
class UsuariosVehiculo extends AppModel {
 
    var $belongsTo = array('Usuario', 'Vehiculo');
}

Con el modelo creado ahora solo es cuestión de crear el controlador como se hace normalmente y empezar a codificar nuestras acciones, como les comenté si desean ahorrarse unos cuantos dolores de cabeza lo recomendable seria hacerlo de esta manera.