2011-06-14 4 views
1

je suis arrivé cours utilisateur et ferme:CakePHP trouver les données des modèles liés

class Firm extends AppModel { 
    var $name = 'Firm'; 
    var $belongsTo = 'User'; 
} 

et:

class User extends AppModel { 
    var $name = 'User'; 
    var $hasMany ='Post'; 
    var $hasAndBelongsToMany = 'Firm'; 
} 

tout fonctionne bien, mais comment puis-je recherche ferme si l'ID utilisateur = par exemple, 5? J'utilisé:

$this->set('firms',$this->Firm->User->find('all', array('conditions'=>array('User.id'=>'5')))); 

et moi je peux mettre:

<table> 
    <tr> 
     <th>Firma</th> 
    </tr> 
    <?php foreach($firms as $firm): ?> 
    <tr> 
     <td><?php echo $firm ['Firm']['firm_id']; ?></td> //line 9 
    </tr> 
    <?php endforeach; ?> 
</table> 

Mais quand j'entre moi je reçois l'erreur:

"Notice (8): Undefined index: firm_id [APP\views\firms\wylistuj.ctp, line 9]"

+1

Pourriez-vous afficher la sortie de

dans votre vue? –

Répondre

0

'firm_id' serait dans votre table de jointure, pas votre modèle Firm.

Si vous cherchez à afficher l'id de l'entreprise actuelle, vous devriez juste besoin de ce

<td> <?php echo $firm['Firm']['id']; ?> </td> 
+0

ne fonctionne toujours pas. Il dit: Indéfini index: id [APP \ views \ firmes \ wylistuj.ctp, ligne 9]. – zax

+0

J'ai reçu la commande SQL de débogage comme ceci: SELECT 'User'.'id',' User'.'user ', 'User'.'password', [..] FROM' users' AS 'User' O WH' Utilisateur '.'id' = 5 SELECT' Firm'.'id', 'Firm'.'login',' Firm'.'password', [..], 'FirmsUser'.'user_id',' FirmsUser' .'firm_id' FROM 'fir' AS 'Firm' JOINmer' fir_users' AS 'FirmsUser' ON (' FirmsUser'. 'user_id' = 5 ET' FirmsUser'.'firm_id' = 'Firm'.'id') O WH = 1 – zax

0

Vous devez rechercher comme ceci:

$this->set('firms',$this->Firm->find('all',array('conditions'=>array('Firm.user_id'=>'5')))); 

Cela devrait vous donner le résultat désiré.

Edit:

Si vous souhaitez associer vos modèles avec un « a et appartient à plusieurs » vous devez écrire vos 2 modèles comme ceci:

//user.php 
class User extends AppModel { 
    var $name = 'User'; 
    var $hasAndBelongsToMany = 'Firm'; 
} 

//firm.php 
class Firmextends AppModel { 
    var $name = 'Firm'; 
    var $hasAndBelongsToMany = 'User'; 
} 

Pour voir comment vous pouvez travailler avec l'association s'il vous plaît lire la section du manuel pour HABTM (has and belongs to many) relationships.

+0

ne fonctionne toujours pas: 1054: Colonne inconnue 'Firm.user_id' dans 'where clause' – zax

+0

Avez-vous même une telle colonne? Pour que cela fonctionne, vous avez également besoin d'une colonne 'user_id' dans votre tableau pour les entreprises. – Tim

+0

non, j'ai la table users_firms avec la colonne user_id et firm_id – zax

Questions connexes