【问题标题】:Codeigniter Active Record - Return Results where Row in Another Table Matches CriteriaCodeigniter Active Record - 返回另一个表中的行匹配条件的结果
【发布时间】:2015-01-23 15:38:40
【问题描述】:

我从编码中休息了一下,不幸的是在这里画了一个空白。我正在运行下面的查询,然后处理数据以过滤唯一用户 ID,但由于 join 命令,它提取了太多信息。 我的查询结果中不需要“用户”表中的数据,只需要关联帐户表中的数据,但其中 user.suspended_by(在用户表中)为 NULL。

$this->db
  ->select('*')
  ->from('linked_accounts')
  ->where('primary_user_id', $primary_user_id)
  ->join('user', 'user.id = linked_accounts.linked_account1_user_id')
  ->where('user.suspended_by', NULL);

$query = $this->db->get();

return $query->result();

如何重写这个查询?

回答:我解决了这个问题,通过添加去掉了不必要的信息

 ->group_by('linked_account1_user_id')

这使得数据的后处理速度更快,因为返回的数据量要小得多。

【问题讨论】:

  • 使用 select ('linked_accounts.*')
  • 我可能必须运行 2 个单独的查询,第一个检查 user.id 是否已暂停,然后仅在未暂停的情况下从linked_accounts 表中选择记录?

标签: php mysql sql codeigniter activerecord


【解决方案1】:

您正在使用$this->db->select('*') “ * ”用于从连接中包含的所有表中获取所有记录,在您使用“ * ”的场景中,您可以使用

$columns = array('linked_accounts.*');
$this->db->select($columns)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 2010-11-16
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    相关资源
    最近更新 更多