首页 文章

根据Codeigniter中先前查询的结果运行查询

提问于
浏览
0

希望有人可以帮助我 . 我已经使用PHP一段时间了,但我是Codeigniter的新手 .

基本上我在两个单独的数据库上有两个表,称为“照片”和“用户” . “照片”包含有关用户想要查看的照片的信息,然后“用户”包含拥有该照片的用户的信息 .

这是代码:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Viewphoto_model extends CI_Model {


    public function get_photo($id)
    {
        $db_photos = $this->load->database('photos', TRUE);
        $db_photos->select('*');
        $db_photos->select("DATE_FORMAT(uploaddate, '%d/%m/%y') as uploaddate_formatted", FALSE);
        $db_photos->from('photos');
        $db_photos->where('approved', '1');
        $db_photos->where('id', $id);

        $query = $db_photos->get();
        return $query->row();
    }
}

所以基本上它根据用户输入到URL中的ID来抓取数据库中的行 .

它工作正常 .

在“照片”表中的每一行中都有一个用户ID号,它是“用户”数据库/表中行的ID号 . 我希望能够根据“照片”表格中行中的ID号从“用户”表中获取相关行 .

我一直试图找到答案,但到目前为止还没有运气 . 我是想在两个数据库之间进行连接,还是可以将get_photo函数中的值传递给运行第二个查询的第二个函数?怎么做到呢?

我想要这样做的方法是从第一个查询的结果中获取userid值,然后将其放入第二个函数的第二个查询中?我怎么做?

任何帮助是最受欢迎的:)

谢谢!

1 回答

  • 1

    这应该在理论上有效,而不是使用codeigniter AR进行太多练习 .

    $db_photos->select(
          "u.*, DATE_FORMAT(p.uploaddate, '%d/%m/%y') as uploaddate_formatted"
          , FALSE);
    $db_photos->from('photos as p');
    $this->db->join('users as u', 'u.id = p.user_id', 'left');
    

    包括你的where子句......

    注意{如果您没有找到用户,那么他们的照片是? }

    试试这个

    //Should work Provided!! Configs are in this Order
    //$db['photos']['']
    //$db['default']['']
    
    
    //First Query ( Users ) 
    $q1 = $this->db->get_where('users', array('id'=>$id));
    
    
    //Second Query (photos)
    $db_photos = $this->load->database('photos', TRUE);
    $q2 = $db_photos->select("DATE_FORMAT(uploaddate, '%d/%m/%y') as uploaddate_formatted", FALSE)
                      ->from('photos')
                      ->where('approved', (int)1);
                      ->where('userid', $q1->row()->id)
                      ->get();
    
    var_dump($q1);
    var_dump($q2);
    
    //you job now is to build and object/array of the combined queries
    //I dont know enough about the outcome to make those judgments
    

相关问题