gpt4 book ai didi

php - CakePHP 容器和模型关联

转载 作者:行者123 更新时间:2023-11-30 00:21:53 25 4
gpt4 key购买 nike

我是 CakePHP 的新手,并发表了一篇文章 here关于我在关系和查找数据方面遇到的问题。事实证明,我的关系似乎没问题,但搜索可以使用收容物来完成。

假设我有 3 个表:reservations、reservation_details 和包含以下数据的 rooms

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 rooms - an entry in reservation_details has one room_id
id | Name | Location
1 Room 1 building A
2 Room 2 building A

这是我的模特/协会

 //Reservation model
public $actsAs = array('Containable');
public $hasMany = array('ReservationDetail', 'Payment');

//ReservationDetail model
public $actsAs = array('Containable');
public $belongsTo = array('Reservation');
public $hasMany = array('Room' => array('foreignKey' = 'id'));

//Room model
public $actsAs = array('Containable');
public $belongsTo = array('ReservationDetail' => array('foreignKey' => 'room_id'));

我想要做的是搜索预订并返回预订详细信息和房间信息。现在所有数据都被返回,除了房间信息,它是一个空数组。这是我正在尝试执行的搜索

$reservation = $this->Reservation->find('all', array(
'conditions' => array(
'Reservation.guest_id' => $guest_id
),
'contain' => array(
'ReservationDetail' => array(
'Room'
)
)
));

我相信 MySQL 查询会是这样的

SELECT reservations.*, reservation_details.*, rooms.* from reservations
INNER JOIN reservation_details on reservation_details.reservation_id = reservation.id
INNER JOIN rooms on rooms.id = reservation_details.room_id
WHERE reservations.guest_id = '1'

最佳答案

模型之间的关系有误。将它们替换为:

//Reservation model
public $actsAs = array('Containable');
public $hasMany = array('ReservationDetail', 'Payment');

//ReservationDetail model
public $actsAs = array('Containable');
public $belongsTo = array('Reservation', 'Room');

//Room model
public $actsAs = array('Containable');
public $hasMany = array('ReservationDetail');

关于php - CakePHP 容器和模型关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23167009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com