在Lynda.com PHP与MySQL Beyond the Basics中,作者Kevin Skoglund介绍了这些方法作为从数据库中检索数据作为对象的方法:
public static function find_by_id($id)
{
global $database;
$id = $database->escape($id);
$result_array = static::find_by_sql("SELECT * FROM " . static::$table_name . " WHERE id = {$id} LIMIT 1");
return !empty($result_array) ? array_shift($result_array) : false;
}
public static function find_by_sql($sql)
{
global $database;
$result_set = $database->query($sql);
$object_array = array();
while ($row = $database->fetch_array($result_set))
{
$object_array[] = static::instantiate($row);
}
return $object_array;
}
protected static function instantiate($record)
{
$class_name = get_called_class();
$object = new $class_name();
foreach ($record as $attribute => $value)
{
if ($object->has_attribute($attribute))
{
$object->$attribute = $value;
}
}
return $object;
}
例如,在用户类中使用它的一个例子是:
$user = User::find_by_id(1);
echo $user->first_name;
我的问题是,如果我有一个帖子表,例如,一个名为“user”的列作为外键,我尝试使用上述方法检索帖子,那么user属性只是一个数字< / p>
$post = Post::find_by_id(1);
echo $post->user; // This will return the id of the user
但是,我希望能够做到这样的事情:
echo $post->user->first_name;
我怎样才能完成这样的事情?它会涉及使用JOIN吗?提前谢谢。
答案 0 :(得分:0)