Yo uso CakePHP 2.2.2 Tengo 3 mesas: restaurantes, cocinas y cocinas_restaurantes - mesa para HABTM.CakePHP cómo recuperar datos HABTM con condiciones?
En el modelo de restaurante que he:
public $hasAndBelongsToMany = array(
'Kitchen' =>
array(
'className' => 'Kitchen',
'joinTable' => 'kitchens_restaurants',
'foreignKey' => 'restaurant_id',
'associationForeignKey' => 'kitchen_id',
'unique' => true,
'conditions' => '',
'fields' => 'kitchen',
'order' => '',
'limit' => '',
'offset' => '',
),
El problema es que no tengo controlador separado para mi página principal en la que necesito para recuperar datos de estos modelos con condiciones complejas.
que añade
public $uses = array('Restaurant');
a mi controlador principal página y aquí viene la parte en la que necesito sus consejos.
Necesito seleccionar solo aquellos restaurantes donde la cocina = $ id. He intentado añadir
public function index() {
$this->set('rests', $this->Restaurant->find('all', array(
'conditions' => array('Restaurant.active' => "1", 'Kitchen.id' => "1")
)));
}
y llegué SQLSTATE [42S22]: La columna no encontrado: 1054 Desconocido columna en 'cláusula where' error. Obviamente necesito obtener datos de "HABTM join table" pero no sé cómo.
de Dave, gracias. Tu código funciona muy bien. Una pequeña pregunta: ¿es posible seleccionar solo los campos que quiero (por ejemplo, solo necesito el nombre de la empresa, y alguna otra información, no todos los campos)? He intentado agregar 'fields' => array ('Restaurant.companyname') a la función getRestaurantsByKitchenId (en el modelo Restaurants) pero no causa ningún efecto. – user1327
@ user1327 - Me alegra ayudar. Sí, debería poder agregar 'fields' => array() al método Model. Simplemente póngalo en el mismo nivel que 'une' (no dentro). Siempre puede usar DebugKit para ver fácilmente qué consultas se están ejecutando, y puede modificarlas según eso. – Dave
Oh, tonto yo. Ahora todo funciona como yo quiero. Una vez mas, Gracias. – user1327