2009-06-04 5 views
1

Je souhaite générer une liste (liste déroulante) avec une relation habtm. Par exemple j'ai une table appelée "users" une autre appelée "vehicles" et "users_vehicles".Comment puis-je trouver ('list') des enregistrements liés à HABTM pour une liste déroulante dans CakePHP?

Ce que je veux, c'est assigner des véhicules à l'utilisateur «x» et les mettre dans une liste déroulante. Comment puis-je atteindre cet objectif?

 

class User extends AppModel { 

    var $hasAndBelongsToMany = array('Vehicle'); 
} 

Répondre

3

Ceci est une façon, il y en a probablement plusieurs autres.

$result = $this->User->Vehicle->find('all', array(
    'recursive' => -1, 
    'conditions' => array('Ownership.user_id' => 66), 
    'fields' => array('Vehicle.*','Ownership.*'), 
    'joins' => array(
     array(
      'table' => 'users_vehicles', 
      'alias' => 'Ownership', 
      'type' => 'LEFT', 
      'foreignKey' => false, 
      'conditions'=> 'Vehicle.id = Ownership.vehicle_id' 
     ) 
    ) 
)); 
$list = Set::combine($result,'{n}.Vehicle.id','{n}.Vehicle.name'); 
1
<code> 
$options['conditions']['Ownership.vehicle_id'] = $x; 
$options['joins'] = array(
          array(
            'table' => 'ownership', 
              'alias' => 'Ownership', 
              'type' => 'Left', 
              'conditions' => 'Vehicle.id = Ownership.vehicle_id' 
              ) 
            ); 
$this->set('vehicles', $this->Vehicle->find('list', $options)); 
</code> 
+0

a fonctionné pour moi. THX! – fabianpimminger

Questions connexes