0
我是CakePHP的新手,对于如何设置模型关联有点麻烦。CakePHP的模型关联
说我有3个表:支付,预订和reservation_details数据如下
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
这里是我的模型协会
//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'));
我想要做的是能搜索对于付款,它将返回该付款的相应预订和reservation_details。因此,它会从共享相同reservation_id的reservation_details中获取任何记录。此时预订已退回,但预订详细信息已返回空
以下搜索将从预付款和预订中返回信息,但是会返回reservation_details中的空数组。
$payment = $this->Payment->find('all',array(
'conditions' => array(
'Payment.guest_id' => '1'
)
));
我几乎可以肯定它的加入对payments.id = payments.reservation_id的reservation_details表,而不是payments.reservation_id = reservation_details.reservation_id。当我手动将payments.id更改为1(reservation_id值)时,将返回reservation_details。
我相信,我想实现将像
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'
非常感谢!完美的作品! – user3476345