CodeIgniter和MVC / OOP的新手。我目前正在尝试解决的问题包括2个表。
图库表
ID
名称
clientID的
客户表
ID
名称
gallery ['clientID']引用客户端['id'],以便我可以检索名称。目前我的gallery_model.php文件看起来像
class Gallery_model extends CI_Model
{
public function __construct()
{
$this->load->database();
}
//Get all in progress galleries from client
public function get_progress($id = FALSE , $clientRef = '205')
{
if($id == FALSE) {
$query = $this->db->get_where('gallery', array('clientRef' => $clientRef, 'finish' => '0' ));
return $query->result_array();
}
}
//Get all proofed galleries from client
public function get_proofed($id = FALSE , $clientRef = '205')
{
//get all galleries from client
if ($id == FALSE) {
$query = $this->db->get_where('gallery',array('clientRef' => $clientRef, 'finish' => '1'));
return $query->result_array();
}
}
//get the gallery selected
public function get_gallery($id , $clientRef = '205')
{
//This returns individual galleries
$query = $this->db->get_where('gallery', array('id' => $id));
return $query->row_array();
}
}
我的控制器如下:
public function index()
{
//Proofed Albums
$data['gallery'] = $this->gallery_model->get_proofed();
//Albums that are in progress
$data['in_progress'] = $this->gallery_model->get_progress();
$this->load->view('templates/header',$data);
$this->load->view('gallery/index',$data);
$this->load->view('templates/footer');
}
然后视图的输出是
$gallery['name'] - $gallery['clientId']
这样的事情的最佳做法是什么。我知道这可能很简单,但我想开始正确地做这件事。我应该使用$this->db->join();
提前感谢您的帮助。
答案 0 :(得分:2)
跟进William's answer,您可以使用CI的活动记录进行联接
$this->db->from('gallery')->join('client', 'gallery.id = client.id')->get()
答案 1 :(得分:1)
使用$this->db->join()
确实是最好的(并且是通过Active Records完成的唯一方法,无需添加自己的SQL),可以在一个查询中从多个表中获取信息。
您可能已经意识到这一点,但为了以防万一(为了将来访问此页面的人的利益),CodeIgniter User Guide有一个很好的页面,详细说明了如何使用Active Records。
内部加入的默认值应该适用于您的目的。如果您有没有链接到客户的图库条目,并且您希望它们包含在结果中,那么您可能需要考虑其他类型的联接,您可以read about here。