【问题标题】:Active Record and queries with CodeIgniter使用 CodeIgniter 进行 Active Record 和查询
【发布时间】:2011-10-22 15:26:45
【问题描述】:

我正在为我的应用程序使用 codeigniter,我有点困惑,我写了一些这样的查询:

public function checkemail($email) {
    $this->db->select('email')->from('user')->where('email', $email);
}

但在 codeigniter 的手册(http://codeigniter.com/user_guide/database/active_record.html)中,他们谈到了 $this->db->get(); 我应该在 $this->db->select 查询之后添加它吗?

我的功能运行良好...

什么时候应该使用 get() ?

谢谢!

【问题讨论】:

    标签: codeigniter activerecord


    【解决方案1】:

    是的,您需要在其他方法之后运行get()select()from()where()将各自的语句添加到查询中,get()实际运行查询并将结果作为对象返回。

    在这种情况下,您可以将其添加到链的末尾。

    public function checkemail($email) {
        $this->db
            ->select('email')
            ->from('user')
            ->where('email', $email)
            ->get();
    }
    

    如果您想在之后处理结果,请确保将其分配给变量。

    $user = $this->db
        ->select('email')
        ->from('user')
        ->where('email', $email)
        ->get();
    

    【讨论】:

    • 感谢您的回答。但是你知道为什么我的查询在没有 get() 的情况下仍然执行吗?我这样称呼它:$this->s_model->checkemail($email);
    • 嗯,我什至没有意识到查询会在不调用 get() 方法的情况下运行。它是否仍然返回一个可以运行查询结果方法的对象? (即result()result_array()等)
    • 是的,我的意思是我在之后调用它并且它有效:if ($this->db->count_all_results() == 0){ ... }
    • count_all_results() 不会像 result()result_array() 这样对查询结果对象进行操作。如果您使用 SQL,这将与执行 COUNT 查询相同。查找实际查询对象返回的行数的等效方法是num_rows()
    • 我不相信您的查询实际上正在执行。只需尝试在其末尾链接其中一种查询结果方法(codeigniter.com/user_guide/database/results.html),看看是否有效。
    【解决方案2】:

    如果您使用get("table_name"),则无需使用from("table_name")。这似乎只是一种替代语法。

    user guide,一直到底部它说:如前所示,您的查询的 FROM 部分可以在 $this->db->get() 函数中指定,所以使用无论您喜欢哪种方法。

    【讨论】:

      猜你喜欢
      • 2017-03-30
      • 2012-04-17
      • 2013-02-22
      • 2013-02-27
      • 1970-01-01
      • 2012-06-05
      • 2016-03-15
      • 2013-01-09
      • 1970-01-01
      相关资源
      最近更新 更多