Salut,

J'aimerais récuperer des personnages qui appartienne à des users.
Seulement quand je fait une requete belongsTo (je n'arrive pas à la faire marché) ou simplement avec la première méthode:

$infos = $this->User->find('all', 
    array(
        'conditions' => 
            array(
                    "User.username = '$name'"
        ),
        'fields' => '*',
        'joins' => array(
            array(
                'table' => 'personnages',
                'alias' => 'Personnage',
                'type' => 'LEFT',
                'conditions'    => array('User.id = Personnage.idUser')
            )
        )
    )
);

Résultat d'un debug($infos)

\app\View\Users\profil.ctp (line 11)
array(
    (int) 0 => array(
        'User' => array(
            'id' => '1',
            'username' => 'Noliax8',
        ),
        'Personnage' => array(
            'idSQL' => '1',
            'idUser' => '1',
            'Level' => '3',
        )
    ),
    (int) 1 => array(
        'User' => array(
            'id' => '1',
            'username' => 'Noliax8',
        ),
        'Personnage' => array(
            'idSQL' => '20',
            'idUser' => '1',
            'Level' => '1',
        )
    )
)

Je trouve que ce n'est pas très pratique, pourquoi pas seulement:

\app\View\Users\profil.ctp (line 11)
array(
    'User' => array(
            'id' => '1',
            'username' => 'Noliax8',
    ),
    'Personnage' => array(
        0 => array(
                'idSQL' => '1',
                'idUser' => '1',
                'Level' => '3',
            ),
        1 => array(
            'idSQL' => '20',
            'idUser' => '1',
            'Level' => '1',

        )
    )
)

C'est normal ? C'est la bonne relation ? Comment faire cette même relation avec belongsTo ? Je n'y arrive pas, j'ai aucun résultat
Tables: users, personnages

Merci d'avance

1 réponse


Il faut que dans ton model User tu définisses une liaison de type hasMany

public $hasMany = array(
        'Personnage' => array(
            'className' => 'Personnage',
            'foreignKey' => 'user_id'));

Et tu joins les model dans ta requête avec un contain :

$infos = $this->User->find('all', array(
    'conditions' => array(...),
    'contain' => array('Personnage'));