【发布时间】:2017-06-12 14:55:46
【问题描述】:
寻找一种通过一次数据库调用而不是两次数据库调用来按预期输出 PHP 对象的方法。
第一个表是pages 第二个是meta。
我想将每个页面的元数据应用到 pages 对象。目前,我可以通过对每个页面记录执行额外的数据库调用或对 PHP 中的每个函数进行一些冗长的操作来做到这一点。
我追求的输出是 $pages->meta->{contains all the meta for that page} 。有没有办法通过一个数据库调用来做到这一点并以这种格式输出数据。
包括我的 fetchAll PHP 函数:
function fetchAll($table,$fields,$where,$order){
global $db;
$sql = "SELECT $fields FROM $table";
if($where){
$sql .= " WHERE $where";
}
if($order){
$sql .= " ORDER BY $order";
}
$stmt = $db->prepare($sql);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_OBJ);
}
然后
$pages = fetchAll("pages","*","type = 'example'");
foreach($pages as $page){
$page->meta = fetchAll("meta","text,lang,tag", "pages_ID = '$page->ID'");
}
表结构
页面
ID | type | uri |
元
ID | pages_ID | type | tag | lang | text
【问题讨论】:
-
为什么不在两个表之间进行内部连接?
-
这会给我所有的数据,但不会按照我在 $page->meta 对象中的方式进行结构化。在 meta 中也有与 pages 同名的列标题。
-
你能给我们你的两个表的结构以及你想要的输出吗?这将有助于制定适当的查询。
-
表结构更新
-
将元属性放在公共而不是私有