从Codeigniter中的相关表中获取数据 - 将MySQL查询转换为CI MVC

时间:2016-02-08 03:43:18

标签: mysql codeigniter model-view-controller

我使用过几个不同的StackOverflow帖子中的示例来从CI中的相关表中获取数据,但是在“where”部分连接我的表时没有成功,我想了解如何翻译从MySQL查询到CI MVC。

这是MySQL查询,用于从dctags表中获取dctag字段,其中articles表中的dctag_id匹配:

$dctagger = $article['dctag_id'];
$query = "SELECT `dctitle`, `dctag_id` FROM dctags WHERE dctag_id = '$dctagger'";
$query_run = mysql_query($query);

这是Model,Controller和View文件的代码:

模型 -

public function get_article_dctag() {
$this->db->select('*')
->from('dctags')
->where('dctag_id', $this->$data['dctag_id']);
$query = $this->db->get();
return $query->result_array(); }

控制器 -

public function article($slug) {
$data['article'] = $this->article_model->get_article($slug);
$data['dctag'] = $this->article_model->get_article_dctag();
$this->load->view('templates/header-article', $data);
$this->load->view('article', $data);
$this->load->view('templates/footer-home'); }

查看 -

<?php foreach ($dctag as $dctag_item): ?>
<title><?php $dctag_item['dctitle']; ?></title>
<?php endforeach; ?>

错误 - “遇到了PHP错误......严重性:通知......消息:未定义的变量:数据...文件名:models / article_model.php”(参见上面的模型代码)

问题是变量$ this-&gt; ...我不知道需要什么。感谢您的解释/澄清 - 提前!

2 个答案:

答案 0 :(得分:0)

在控制器中,您应该在get_article_dctag($ var)上传递变量 这将是你的模型get_article_dctag()的参考,这应该有你正在搜索的参数。在你的结构中,模型似乎无法在函数中找到你的$ data ['dctag_id']

在控制器中

$dctag_id = 2
$this->article_model->get_article_dctag($dctag_id);

在你的模特中

function get_article_dctag($dctag_id){
$this->db->where('dctag_id',$dctag_id);}

希望它能帮助你很多

答案 1 :(得分:0)

如果dctag_id位于$data['article'],请使用以下代码

在控制器上

public function article($slug) 
{
    $data['article'] = $this->article_model->get_article($slug);
    $data['dctag'] = $this->article_model->get_article_dctag($data['article']['dctag_id']);
    $this->load->view('templates/header-article', $data);
    $this->load->view('article', $data);
    $this->load->view('templates/footer-home'); 
}

在您的模型上

public function get_article_dctag($id)
{
    $this->db->select('*')
             ->from('dctags')
             ->where('dctag_id', $id);
    $query = $this->db->get();
    return $query->result_array(); 
}