我会尽力解释自己。不是 100% 确定如何措辞。我在多个表中有数据,例如
tbl_rooms
tbl_tables
tbl_people_sitting_at_table
所有这些表都有链接ID,我想做的是构建一个“房间”对象而不是在循环中查询数据库。现在我所拥有的是这样的伪代码
foreach ($rooms as $room) {
$room->tables = get_all_the_table_by_room_id($room->room_id);
.....
foreach ($room->tables as $table) {
$table->people_sitting_at_table = get_all_the_people_by_table_id($table->table_id);
我有什么工作,但我不喜欢构建对象所需的查询量。这是我要发回的一个例子
stdClass Object
(
[id] => 15
[room_name] => room_name
[tables] => Array
(
[0] => stdClass Object
(
[id] => 34
[table_name] => table_name
[people_sitting_at_table] => Array
(
[0] => stdClass Object
(
[id] => 45
[name] => name
我遇到的困难是知道如何组织所有这些,如果我要预先获得所有数据。如果我把房间里的所有桌子都放在房间里,然后所有桌子上的人都在我怎么能让人有效地嵌套在正确的表格下
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
CREATE TABLE `tbl_people_sitting_at_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`table_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `tbl_people_sitting_at_table` (`id`, `name`, `table_id`) VALUES
(1, 'jim', 1),
(2, 'bob', 1);
CREATE TABLE `tbl_rooms` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `tbl_rooms` (`id`, `name`) VALUES
(1, 'room one'),
(2, 'room two');
CREATE TABLE `tbl_tables` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`room_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `tbl_tables` (`id`, `name`, `room_id`) VALUES
(1, 'table one', 1),
(2, 'table two', 1);