连接表的方法链接与CI 3上的分页

时间:2015-10-27 10:22:50

标签: mysql codeigniter chaining

我创建了一个名为MY_Model的核心类,它扩展了CI_Model。在这个类中,我创建了一个链接方法来获取所有带有分页的记录:

// Take record with paging.
public function get_all_paged()
{
    // get argument that passed
    $args = func_get_args();

    // get_all_paged($offset)
    if (count($args) < 2) {
        $this->get_real_offset($args[0]);
        $this->db->limit($this->_per_page, $this->_offset);
    }

    // get_all_paged(array('status' => '1'), $offset)
    else {
        $this->get_real_offset($args[1]);
        $this->db->where($args[0])->limit($this->_per_page, $this->_offset);
    }

    // return all record
    return $this->db->get($this->_tabel)->result();
}

所以,我刚刚在我的控制器上使用了这个, 例如

public function index($offset = NULL) {
    $karyawan = $this->karyawan->get_all_paged($offset); //get all

}

我真的很混淆用连接获取所有记录,我知道加入CI就像这样:

public function get_all_karyawan() {


    $this->db->select('tb_1 , tb_2');
    $this->db->from('tb_1');
    $this->db->join('tb_2', "where");
    $query = $this->db->get();

    return $query->result();
}

如何在MY_Model中将其变成链?

任何帮助它如此赞赏......

1 个答案:

答案 0 :(得分:1)

查询构建器中的好处是,您可以将db方法链接到get()。因此,您可以以不同的方式定义,选择,查询,限制。

例如:

public function category($category)
{
    $this->db->where('category_id', $category);
    return $this;
}

public function get_posts()
{
    return $this->db->get('posts')->result();
}

你可以获得所有帖子:

$this->model->get_posts();

或按类别:

$this->model->category(2)->get_posts();

所以,在你的模型中:

public function get_all_karyawan() {
    $this->db->select('tb_1 , tb_2');
    $this->db->join('tb_1', "where");
    // Here you make able to chain the method with this
    return $this;
}

在您的控制器中:

public function index($offset = NULL) {
    $karyawan = $this->karyawan->get_all_karyawan()->get_all_paged($offset);
}