Bonjour à tous!

J'ai une table 'Contrat'=>hasMany=>Commission et Commission=>belongsToo=>Contrat je veux récupérer les contrats qui ont seulement des commissions entre 2 dates:

Ce que je fais

$commissions = $this->find('all',
                                    array(
                                        'conditions' => array(
                                                            'Contrat.paye_complet'=>1,
                                                            'Contrat.commission_paye'=>1,
                                                            'Contrat.commission_count>0'
                                                            ),
                                            'contain' => array(
                                                'Commission' => array(
                                                    'conditions' => array(
                                                                            'Commission.commission_valide>="'.$start_date.'"', 
                                                                            'Commission.commission_valide<="'.$end_date.'"'
                                                                        )
                                                                ),
                                                'Vendeur',
                                                'Client'
                                                             )
                                        ));

Ce que j'obtiens

Mon tableau de résultat inclu les contrats qui ont des commissions en dehors de la plage de date mais exclut les commissions. (J,ai donc l'enregistrement de tous les contrats)

Je ne veux pas obtenir les contrats qui n'ont pas de commissions dans la plage de date. Que dois-je modifier?

2 réponses


Bonjour.
Essaies tout simplement comme-ceci :

$commissions = $this->find('all', 
    array(
        'conditions' => array(
            'Contrat.paye_complet'=> 1, 
            'Contrat.commission_paye'=>1, 
            'Contrat.commission_count >' => 0, 
            /* Changement ici */
            'Commission.commission_valide >=' => $start_date, 
            'Commission.commission_valide <=' => $end_date
        ), 
        'contain' => array('Commission', 'Vendeur', 'Client')
    )
);

Merci de ta réponse mais si je le fais comme tu le suggère j,obtiens ce message d'erreur:

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Commission.commission_valide' in 'where clause'