0

假设我有两个表来存储用户配置文件:(sm_user_profiles社交媒体)和vital_user_profiles.

现在我想要一个用于访问个人资料信息的通用对象。为清楚起见,此对象仅适用于一个用户(登录用户),不会返回多行。

从此开始:

$query = $this->db->query('SELECT * FROM vital_user_profiles WHERE id="1"');
$profile = $query->row();

echo $profile->email;

我怎样才能把它和这个结合起来:

$query = $this->db->query('SELECT * FROM sm_user_profiles WHERE id="1"');`
$profile = $query->row();

echo $profile->facebookURL;

这样我才能做到这一点?

echo $profile->email.$profile->facebookURL;

我是 PHP 对象的新手。提前致谢!

4

3 回答 3

0

你可以使用LEFT JOIN功能

$query = $this->db->query('SELECT * FROM `vital_user_profiles` a LEFT JOIN  `sm_user_profiles` b ON a.`id` = b.`id` WHERE a.`id` = "1"');
$profile = $query->row();

现在我们有了我们需要的所有数据,所以你可以回显这两个值

echo 'Email: ' . $profile->email . ' facebook url: ' .  $profile->facebookURL;
于 2013-04-17T05:10:47.880 回答
0

是的,您可以开始创建一个对象,然后最后返回包含所有表信息的对象。例如

public function build_user($uid) {
  $user_data['vital'] = $this->db->select()->from('vital_user_profiles')->where('id', $uid)->get()->row();
  $user_data['sm'] = $this->db->select()->from('sm_user_profiles')->where('id', $uid)->get()->row();
  return $user_data;
}

这应该会给你一个很好的对象,其中包含所有的字段数据。您可以继续添加更多内容。我有一个大模型,它正在做同样的事情,我从 4 或 5 个不同的表创建了一个节点对象,这些表是由 Drupal 管理的数据库,前端是使用 Code Igniter 完成的。如果您愿意,如果这对您不起作用,我可以将代码发送给您以供参考。

于 2013-04-16T06:22:14.427 回答
0

您可以使用加入

sm_user_profiles.id = vital_user_profiles.id

在哪里

vital_user_profiles.id  =1 ;

像这样的东西

于 2013-04-16T05:49:08.113 回答