我有三个要查询的表。现在,CakePHP 仅从 Visits 和 Guest 中提取数据,它错误地加入了 Rooms,正如我将解释的那样。
Visits
id | guest_id | room_id | arrival_date
Guests
id | name | user_id
Rooms
id | user_id | description
在查询访问时,我正在尝试获取所有三件事的信息
$visits = $this->paginate('Visit', array(
'arrival_date >=' => $date,
'room.user_id' => $user_id
)
);
这是我在模型中的关系
参观模型
public $hasOne = array(
'Guest' => array(
'foreignKey' => 'id'
),
'Room' => array(
'foreignKey' => 'id'
)
);
房间模型
public $belongsTo = array( //user creates a room
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
public $hasMany = array(
'Visit' => array(
'foreignKey' => 'visit_id',
),
);
在我使用 sql_dump 时的每一个查询中,它都将 Room 的连接显示为
LEFT JOIN `TestReservations`.`rooms` AS `Room` ON (`Room`.`id` = `Visit`.`id`)
它应该是 Room.id = Visit.room_id
我不小心将房间模型中的 hasOne 关系更改为 room_id,我注意到它以“Room.room_id = visit.id”的形式加入。这个外键显然是通过这个设置的,为什么不在访问模型中呢?