Je suis nouveau sur CakePHP et j'ai un peu de mal à comprendre comment configurer les associations de modèles.Associations de modèles pour CakePHP
Dire que j'ai 3 tables: paiements, réservations et reservation_details avec les données suivantes
table reservations
id | confirmation_number | guest_id
1 123 1
table reservation_details -a reservation can have multiple entries (multiple rooms)
id | reservation_id | date | time | room_id | rate
2 1 2014-18-04 13:00 1 9.99
3 1 2014-18-04 13:00 2 4.99
table payments - many payments for one reservation can be made
id | reservation_id | payment_amount | payment_type | guest_id
4 1 14.98 Cash 1
Voici mon modèle Associations
//Reservation model
public $hasMany = array('ReservationDetail', 'Payment');
//ReservationDetail model
public $belongsTo = array('Reservation');
//Payment model
public $belongsTo = array('Reservation');
public $hasMany = array('ReservationDetail' => array('foreignKey' => 'reservation_id'));
Ce que je suis en train de faire est d'être en mesure de rechercher pour un paiement et il retournera la réservation correspondante et les détails de la réservation pour ce paiement. Ainsi, il récupèrerait tous les enregistrements de reservation_details partageant le même ID de réservation. La réservation est maintenant retournée, mais la réservation_details est retournée vide
La recherche suivante renvoie des informations de paiements et de réservations, mais un tableau vide de reservation_details.
$payment = $this->Payment->find('all',array(
'conditions' => array(
'Payment.guest_id' => '1'
)
));
Je suis presque certain qu'il est se joindre à la table reservation_details sur payments.id = payments.reservation_id plutôt que payments.reservation_id = reservation_details.reservation_id. Lorsque je modifie manuellement payments.id à 1 (la valeur de reservation_id), les détails de la réservation sont renvoyés.
Je crois que la requête MySQL que je suis en train de réaliser serait quelque chose comme
SELECT reservations.*, reservation_details.*, payments.* from payments
INNER JOIN reservations on reservations.id = payments.reservation_id
INNER JOIN reservation_details on reservation_details.reservation_id = payments.reservation_ID
WHERE payments.guest_id = '1'
Merci beaucoup! Fonctionne parfaitement! – user3476345