gpt4 book ai didi

php - 连接用户表和帖子并为每个创建一个实例

转载 作者:行者123 更新时间:2023-11-29 15:07:38 24 4
gpt4 key购买 nike

假设我正在构建评论提要,需要作者的评论数据和用户数据。注释由 Comment 类表示。用户由 User 类表示。提取评论时,Comment$author 成员应设置为 User 的实例(以保留有关作者的所有信息) .

class Comment {
var $id;
var $body;
var $timestamp;
var $etc;
var $authorid;
var $author; //(a 'user' instance)
static function fromArray($members){ /*...*/ }
}
class User {
var $id;
var $username;
var $haspicture;
var $etc;
static function fromArray($members){ /*...*/ }
}

我现在是怎么做的...

到目前为止,我一直在这样做的方式是连接表并仅提取我需要的基本用户数据...如果任何列名发生冲突,我会设置一个别名(field AS Somethingelse)。这是基本的外观:

$query = mysql_query('SELECT c.*, u.username AS author_username, u.haspicture AS author_haspicture FROM comments c JOIN user u ON u.id = c.authorid');
while ($row = mysql_fetch_array($query, MYSQL_ASSOC)){
$comment = Comment::fromArray($row);
}

要创建 $author...每行提供的 Comment fromArray() 方法如下所示:

static function fromArray($members){ 
foreach($members as $field => $value){
$this->$field = $value;
}
$this->author = User::fromArray(array(
'id' => $row['authorid'],
'username' => $row['author_username'],
'haspicture' => $row['author_haspicture']
));
}

这是我的问题:

我错过了什么吗?必须有更好的方法来做到这一点。这种方式看起来非常不灵活,并且在表更改或 User 方法更改时容易中断,最终需要查询未提供的字段。不可能为每个用户提供单独的查询...可以吗?

<小时/>

(p.s. 请记住,User 对象比这更复杂一些,它有更多的方法,稍后显示注释时会调用这些方法。它不能被合理地展平并被视为数组。面向对象的设置是非常必要的。)

最佳答案

如果我是你,我会看一下 ORM 中的一些内容周围的工具,这里有一个关于可用于 php 的很好的总结:

Good PHP ORM Library?

关于php - 连接用户表和帖子并为每个创建一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1657006/

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