我对Jamie Rumbelow的MY_Model和模型有一个疑问.MY_Model提供一个保护变量,该变量保存表的名称.我想使用它,但我希望我的模型能够处理3个表.所以我想我的问题是模型可以处理多个表吗?这样做是好习惯还是每个数据库表都有一个模型更好?
默认情况下,MY_Model不支持多个表,但是,您可以非常轻松地创建方法 - 我喜欢称之为范围 - 以高效和优雅的方式链接到其他表.
假设我们有一个post_model.php需要从类别表中提取数据.我假设我们想要根据 post.category_id引入我们的category.name.
class Post_model extends MY_Model
{
public function with_category()
{
$this->db->join('categories', 'categories.id = post.category_id', 'left');
$this->db->select('categories.name AS category_name');
return $this;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我们可以使用我们的with_category()方法(与所有内置的MY_Model方法一起链接)来提取我们的类别信息:
$this->post_model->with_category()
->get_all();
Run Code Online (Sandbox Code Playgroud)
或者get_by():
$this->post_model->with_category()
->get_by('status', 'open');
Run Code Online (Sandbox Code Playgroud)
范围界定是将其他表引入模型的一种很酷的方式,同时仍然可以使用MY_Model提供的所有很酷的东西.